Problème avec les références vers les Dlls de composants

cs_cfz Messages postés 23 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 4 mars 2006 - 30 janv. 2006 à 14:42
cs_cfz Messages postés 23 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 4 mars 2006 - 30 janv. 2006 à 15:42
Bonjour,
il y a quelque chose que j'ai du mal a comprendre avec les références de Dlls et Visual Studio.
Je vous explique ci-dessous mon problème (j'ai déjà eu le problème une fois la semaine dernière et j'ai réussi a le contourner... je ne sais plus trop comment :-/).
(Rq.: soyez indulgent SVP, ça ne fait qu'une semaine que j'ai installer Visual Studio 2005)

Description du contexte :
Mon projet est découpé en plusieurs Dlls stoquées pour une partie dans l'espace de nommage "CFZ.Composants" et pour le reste dans "CFZ.Composants.GestPlanning".
Mon application est stockée quant à elle dans "CFZ.Applications.GestPlanning".
Pour info, les répertoires de ces différents éléments respectent l'espace de nommage défini (F:\Work\Développement\CFZ\Composants\ , etc...).
L'un de mes derniers composants CFZ.Composants.GestPlanning.Fiches.Dll fait référence à trois autres de mes composants (CFZ.Composants.TitratedFrame, CFZ.Composants.Localization, CFZ.Composants.GestPlanning.Langues).
Jusque là, aucun problème.
Mise en place du problème :
J'ajoute maintenant un nouveau projet : PrjGen que je met dans CFZ.Composants.GestPlanning et dont l'assembly se nomme CFZ.Composants.GestPlanning.PrjGen.Dll. Après avoir mit 2-3 éléments publics je compile (Build et Rebuild pour être sûr... je ne connais pas trop la différence entre les deux) ce nouveau composant.
Puis dans mon dernier composant (CFZ.Composants.GestPlanning.Fiches.Dll), j'ajoute la référence vers cette Dll (qui se trouve alors dans le répertoire F:\Work\Développement\CFZ\Composants\GestPlanning\PrjGen\obj\Release\) puis j'utilise les 2-3 éléments publics définis précédemment. Ils sont bien reconnu.
Problème :

Je compile et tout se passe bien, j'exécute et là c'est le drame : à l'appel de la fonction utilisant les 2-3 éléments publics cités plus haut il m'envoi une exception :

Could not load file or assembly 'CFZ.Composants.GestPlanning.PrjGen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Le fichier spécifié est introuvable.

Or ma Dll CFZ.Composants.GestPlanning.PrjGen.Dll est bien présente (d'ailleur elle est présente dans 4 répertoires distincts : obj\release , obj\debug , bin\release et bin\debug).

J'ai essayé tout ce qui me passait par la tête, avec ou sans le projet PrjGen dans la solution Visual Studio...
Je n'y comprend rien!!! merci d'avance.

2 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
30 janv. 2006 à 15:03
Salut, j'ai du mal à visualiser ton projet..

Tu execute le projet, mais quel est le fichier EXE, tu ne parles que de DLL !?

EXE et DLL doivent ( il me semble ) se trouver dans le même répertoire ou les DLL dans la GAC.
0
cs_cfz Messages postés 23 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 4 mars 2006
30 janv. 2006 à 15:42
J'ai finalement réussi à résoudre mon problème... mais je ne comprend toujours pas la logique utilisé par Visual Studio... voir la suite...

Mon application (mon EXE donc) se trouve stockée dans CFZ.Applications.GestPlanning. Le composant Fiches se trouvent quant à lui, comme c'est le cas des autres composants, dans CFZ.Composants.GestPlanning.. et par conséquant dans un autre répertoire. Mais le problème ne vient pas de là... ça marche très bien avec les autres composants.
NB.: chaque dossier de l'espace de nommage représente un dossier dans l'architecture windows dont la base est F:\Work\Développement\ (exemple : CFZ.Composants.GestPlanning.Fiches.Dll se trouve dans le répertoire F:\Work\Développement\CFZ\Composants\GestPlanning\Fiches\)

L'architecture complète de mon projet est la suivante :
CFZ.Applications.GestPlanning (où se trouve l'exe) utilise :
CFZ.Composants.GestPlanning.Constantes
CFZ.Composants.GestPlanning.Fiches
CFZ.Composants.GestPlanning.Langues
...
CFZ.Composants.GestPlanning.Fiches utilise :
CFZ.Composants.GestPlanning.Langues
CFZ.Composants.GestPlanning.PrjGen

Tout marche bien mais à l'exécution il m'envoi l'exception d'absence du fichier.
Par contre tout marche bien si j'ajoute également la référence de CFZ.Composants.GestPlanning.PrjGen dans l'exe. C'est bizzare... pourquoi suis-je obligé de la mettre dans l'exe, PrjGen n'est pas utilisé directement par l'exe!!! Il est juste utilisé dans une fonction privée de Fiches.

Même si mon problème est résolu, si quelqu'un peut m'expliquer... j'écouterais avec grand intérêt.
++
0
Rejoignez-nous