2010-12-01 8 views
3

voici mon scénario:Impossible de charger exception de montage lors de l'utilisation Assembly.LoadFile

J'ai trois projets: deux DLL et une application de la console, nous allons les nommer foo.dll, bar.dll et console.exe. Console.exe charge foo.dll en utilisant Assembly.LoadFile (@ "c: \ foo.dll"). Le projet de Foo.dll fait référence à bar.dll et utilise une classe. Console.exe charge foo.dll correctement, le problème se produit lorsque foo.dll essaie d'utiliser la classe de bar.dll. Je reçois un « n'a pas pu charger le montage: " bar.dll" bla bla exception

Quelques points:

  • Tous les projets sont solides nommés
  • préférerait ne pas utiliser le GAC
  • Bar .dll est dans c: \ bar.dll

donc, tout est dans le même répertoire local, les dll corrects sont référencés (via les propriétés du projet, et je l'ai utilisé réflecteur pour vous assurer que les versions de montage sont corrects). Si J'installe bar.dll au GAC tout fonctionne comme prévu.

Je pense qu'il a quelque chose à voir avec l'appel Assembly.LoadFile, et faire un saut à la deuxième DLL, mais je ne suis pas sûr.

Merci pour votre temps et votre contribution. Assembly.LoadFile() ne doit être utilisé que dans des circonstances très particulières.

Répondre

4

L'assembly n'a pas de contexte de chargement, c'est pourquoi bar.dll est introuvable. Le seul cas d'utilisation réel est l'outillage, des programmes qui exportent des métadonnées d'assemblage.

Utilisez Load ou LoadFrom(). Résoudre les problèmes avec fuslogvw.exe

+0

Merci beaucoup, Hans! J'ai essayé les deux méthodes et j'ai réussi à faire travailler chacune d'entre elles. – Eckstein

Questions connexes