2010-07-13 4 views
4

Je reçois un FileNotFoundException vraiment bizarre lorsque j'essaie d'utiliser une classe définie dans un assembly que j'ai référencé. L'assembly n'a pas changé et l'emplacement dans le fichier de projet correspond correctement au chemin physique sur le disque. Cela a soudainement commencé à échouer dans une solution qui consiste en deux projets de bibliothèque, un projet de service Windows et une application console, lorsque j'ai ajouté des programmes d'installation au service Windows et un projet d'installation. Cependant, j'ai l'application de console en tant qu'objet de démarrage unique, il n'y a aucune référence dans les deux cas entre l'application de console et les projets de service/installateur.FileNotFoundException levé pour un assembly référencé

+0

Pouvez-vous coller toute trace de la pile d'exception? – Grzenio

Répondre

4

Si vous activez la journalisation de liaison d'assembly, vous constaterez que FileNotFoundException contiendra en son sein le journal de vérification de fusion complet pour le fichier manquant. Normalement, cela rend le problème assez évident tout de suite.

Voir http://msdn.microsoft.com/en-us/library/e74a18c4(VS.80).aspx

+0

OK - J'ai démarré le logger, je l'ai géré pour attraper une exception, et j'ai trouvé que l'application console cherchait l'assembly "manquant" dans son propre répertoire de sortie (\ bin \ Debug \) plutôt que là où il devrait être. Regardé. J'ai regardé dans le fichier de projet, trouvé et supprimé une référence à * un autre * dll, et soudainement ce problème a été résolu. Ne me demandez pas comment, mais ça marche. : P –

+1

Lorsque vous référencez un assembly à partir de, et comment l'assembly est résolu à l'exécution sont deux choses totalement différentes, ce qui surprend beaucoup de gens. Le lien ci-dessus a probablement l'ordre de sonde de liaison référencé, mais les assemblages IRRC seront d'abord résolus à partir du GAC, puis le chemin bin privé (bin/debug) avant n'importe où ailleurs. Donc, s'il y a une copie de cet assembly dans ce chemin (parce que c'est une dépendance d'une autre dépendance), c'est de là que ça va être chargé. – piers7

Questions connexes