Не удалось загрузить исключение сборки при использовании Assembly.LoadFile - PullRequest
3 голосов
/ 01 декабря 2010

вот мой сценарий:

У меня есть три проекта: две библиотеки DLL и одно консольное приложение, назовем их foo.dll, bar.dll и console.exe. Console.exe загружает foo.dll с использованием Assembly.LoadFile (@ "c: \ foo.dll"). Проект Foo.dll имеет ссылку на bar.dll и использует класс. Console.exe нормально загружает foo.dll, проблема возникает, когда foo.dll пытается использовать класс bar.dll. Я получаю исключение "не удалось загрузить сборку:" bar.dll ", бла-бла.

Некоторые баллы:

  • Все проекты с сильным именем
  • предпочел бы не использовать GAC
  • Bar.dll находится в c: \ bar.dll

Таким образом, все находится в одном и том же локальном каталоге, ссылки на правильные dll (через свойства проекта, и я использовал Reflector, чтобы убедиться, что версии сборки верны). Если я установлю bar.dll в GAC, все будет работать как положено.

Я думаю, что это как-то связано с вызовом Assembly.LoadFile и переходом ко второй DLL, но я не уверен.

Спасибо за ваше время и вклад.

1 Ответ

4 голосов
/ 01 декабря 2010

Assembly.LoadFile () должен использоваться только в особых случаях.Сборка не имеет контекста загрузки, поэтому bar.dll не может быть найден.Единственный реальный вариант использования - это инструменты, программы, которые выводят метаданные сборки.

Использовать Load или LoadFrom ().Устраните проблемы с fuslogvw.exe

...