Member 13688117 Ответов: 2

Ошибка в релизе exe файла


Привет,

Я сталкиваюсь со следующим FileNotFoundExemption, когда запускаю exe-файл вне каталога visual studio 2015.Как я могу исправить ошибку сборки.

************** Текст Исключения **************
System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'WinUSBNet, Version=1.0.3.0, Culture=neutral, PublicKeyToken=null' или одну из его зависимостей. Система не может найти указанный файл.
Имя файла: 'WinUSBNet, Version=1.0.3.0, Culture=neutral, PublicKeyToken=null'
в xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(отправитель объекта, EventArgs e)
в системе.Окна.Формы.Контроль.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnMouseUp(MouseEventArgs mevent)
в системе.Окна.Формы.Контроль.WmMouseUp(Message& m, кнопка MouseButtons, Int32 клика)
в системе.Окна.Формы.Контроль.WndProc(сообщение& m)
в системе.Окна.Формы.ButtonBase.WndProc(сообщение& m)
в системе.Окна.Формы.Кнопка.WndProc(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.OnMessage(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.WndProc(сообщение& m)
в системе.Окна.Формы.Родное окно.Обратного вызова(hwnd элемента указателя IntPtr, int32 и глутамат натрия, указателя IntPtr параметр wparam, указателя IntPtr lparam должен)

Предупреждение: Регистрация привязки сборок выключена.
Чтобы включить ведение журнала сбоев привязки сборки, установите значение реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) до 1.
Примечание: существует некоторое снижение производительности, связанное с регистрацией сбоев привязки сборки.
Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion!EnableLog].

Что я уже пробовал:

Я работал в конфигурации отладки.Изменена конфигурация для выпуска и размещения exe-файла из папки visual studio при запуске из этого местоположения произошла ошибка в библиотеке.

F-ES Sitecore

Если вы сделаете то, что предлагает ошибка, и включите журнал ошибок привязки сборки, он сообщит вам все папки, в которых он искал соответствующую сборку. Убедитесь, что сборка находится в одном из них вместе с любыми сборками, на которые полагается assembliy. EXE-файлы .net не являются автономными или автономными, им нужен доступ к компонентам, на которые они полагаются.

Member 13688117

Спасибо

2 Ответов

Рейтинг:
18

Jochen Arndt

То WinUSBNet Библиотека DLL должна находиться в том же каталоге, что и исполняемый файл.

Проверьте свое решение на наличие различий между сборками debug и release (например, создание библиотеки DLL не в режиме release или указание другого выходного каталога для сборки release).


Member 13688117

Извините, что мой вопрос был не совсем ясен.При моем обычном выполнении в папке проекта и релиз, и отладочная версия работают нормально.Мне нужно поделиться exe-файлом.Когда я изменил папку, она работает правильно до тех пор, пока ей не понадобится доступ к библиотеке winusbnet.После этого он показывает вышеуказанную ошибку.

Member 13688117

Большое вам спасибо за ваш ответ.Я обнаружил, что даже при совместном использовании файла .exe я должен держать dll вместе с exe в одной папке.Теперь он работает нормально.

Рейтинг:
0

Pete O'Hanlon

Это означает, что требуемая сборка отсутствует в каталоге выпуска или не может быть найдена в пути поиска. Первая и самая очевидная вещь-это заглянуть в этот каталог и посмотреть, находится ли там WinUSBNet. Если это так, то вам нужно посмотреть, каковы зависимости от этого файла (вы можете использовать SysInterals зависит[^] чтобы идентифицировать это).


Member 13688117

Спасибо за ваш ответ.