Не удается использовать внешнюю DLL: FileNotFoundException

#c# #dll #filenotfoundexception

#c# #dll #исключение filenotfoundexception

Вопрос:

У меня есть 2 проекта. Первая просто генерирует библиотеку DLL.

Для второго требуется первая библиотека DLL. Но когда я вызываю метод из библиотеки DLL, у меня возникает FileNotFoundException с таким сообщением :

BDD, версия =1.0.0.0, Культура = нейтральная, PublicKeyToken= null

Я уверен, что файл существует. Где я ошибаюсь?

Комментарии:

1. Добавили ли вы библиотеку DLL в качестве ссылки в проект, который пытается ее использовать? Или, по крайней мере, скопировал библиотеку DLL в тот же каталог, что и скомпилированный исполняемый файл?

2. Является ли project1.dll в той же папке, что и project2.exe когда вы ее запускаете?

3. Как называется проект / сборка?

Ответ №1:

Согласен с Киреном ( 1). Возможно, он находит вашу DLL, но для этого требуется другая зависимая DLL, которую невозможно найти. Или есть проблема с подписью (возможно, вы ищете другую версию DLL и т.д.) Чтобы включить журнал слияния (вам нужно будет создать пару разделов реестра): Установите LogFailures равным 0/1, чтобы отключить / включить

Кстати, fusion — это библиотека DLL, которая содержит логику для загрузки сборки (поиск локального пути и вложенных папок, если указано, просмотр GAC, …). После запуска вашего исполняемого файла вы найдете журнал с подробным описанием проблем, обнаруженных CLR при загрузке сборок, на которые даны ссылки (игнорируйте журналы NativeImage, просматривайте только журналы по умолчанию).

Ответ №2:

Краткий ответ: библиотека DLL должна находиться в том же каталоге, что и EXE.

Так ли это?

Ответ №3:

Не могли бы вы предоставить полное сообщение — и:

Пожалуйста, имейте в виду, что FileNotFoundException это может быть из-за зависимости указанной библиотеки DLL, а не только из-за самой указанной библиотеки DLL.

Возможно, вы захотите включить журнал привязки сборки (Fusion log), чтобы посмотреть, что происходит, если библиотека DLL действительно присутствует.

Комментарии:

1. Я думаю, вам нужно предоставить информацию о том, как включить этот журнал.

2. Я импортирую библиотеку DLL в VisualStudio без проблем. Но когда я вызываю метод из библиотеки DLL, я получаю filenotfound…

3. Вы не можете «импортировать» библиотеку DLL, вы имеете в виду добавить ссылку? Это не обязательно много значит. Возможно, вы могли бы ответить на вопросы, которые задают люди — какова полная ошибка, находится ли библиотека DLL в том же каталоге, что и исполняемый файл, и т.д.?

4. Да, библиотека DLL находится в том же каталоге. Полная ошибка: pastebin.com/zpZgJfMf

5. В строках с 18 по 21 говорится «попытка загрузить библиотеку DLL с URL ..», и она просматривается /bin/debug/BDD.DLL , но не находит ее. Определенно ли библиотека DLL находится в правильном месте C:/IHMAdministrateur/IHMAdministrateur/bin/Debug/BDD.DLL ?