«System.IO.FileNotFoundException: не удалось загрузить файл или сборку», когда сборка действительно существует - PullRequest
3 голосов
/ 09 октября 2009

В рамках нашей миграции с .net 1.1 на .net 3.5 нам пришлось заменить несколько DLL-файлов продавца.

Один из них доставляет нам неприятности только в 1 месте из 4 мест, где мы его используем:

Проблемой является проект формы Windows, который использует отражение для динамической загрузки некоторых библиотек DLL, которые запускают долго выполняющиеся процессы. Одним из этих длительных процессов является агент, который использует одну из наших DLL-библиотек

Мы получаем исключение отсутствующей сборки в точке, где мы сначала вводим функцию, которая ссылается на библиотеку. Я уже проверил глупости, например, если мы забыли перенести ссылку со старой версии на новую, но это не так. Я также проверил каталог bin проекта и там есть сборка.

Кто-нибудь сталкивался с ситуацией, когда среда выполнения .net 2.0 отказывается загружать такую ​​сборку? И если так, как мы могли бы решить эту проблему.

Дополнительная информация:

Конкретным поставщиком в этом случае является dtSearch, и это граница, где выдается ошибка:

Private Sub BuildIndex()
    SetIndexOptions()
    ExecuteIndexJob()
End Sub

Private Sub SetIndexOptions()
    'Body removed for brevity
End Sub

На библиотеку ссылаются в SetIndexOptions. BuildIndex() вводится, но исключение происходит при вызове SetIndexOptions. Эта функция фактически никогда не вводится.

Ответы [ 3 ]

4 голосов
/ 09 октября 2009

Если у вас все еще есть проблемы, вы можете использовать Просмотр журнала привязки сборки (Fuslogvw.exe) , чтобы определить, какие сборки загружаются вашим приложением. Этот инструмент является частью .NET Framework. Это предоставит вам подробную информацию обо всех зависимых сборках.

Я использовал это в прошлом при работе со сторонними сборками, очень полезно

1 голос
/ 20 октября 2009

Оказывается, опция компиляции по умолчанию была изменена с VS2003 на VS2008, и она компилировалась с неправильной битностью: \ Теперь я чувствую себя немного глупо!

1 голос
/ 09 октября 2009

FileNotFoundException может быть вызвано, даже если сборка существует, если не удалось загрузить одну из зависимых сборок.

Попробуйте использовать Dependency Walker , чтобы проверить и убедиться, что все зависимые сборки также присутствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...