#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 и т.д.) Чтобы включить журнал слияния (вам нужно будет создать пару разделов реестра):
Кстати, 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
?