Процедура, импортированная {myassembly}, не может быть загружена - PullRequest
20 голосов
/ 22 декабря 2009

при запуске проргама кажется, что мне не хватает библиотеки, когда я запускаю вывод моего проекта, я получаю исключение при запуске.

A first chance exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll
An unhandled exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll

Additional information: A procedure imported by 'my assembly, Version=xx.1.1.0, Culture=neutral, PublicKeyToken=7292581204d9e04a' could not be loaded.

'ScriptX.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', No symbols loaded.

Мой вопрос: как я могу определить, какая библиотека отсутствует, потому что на данный момент я не вижу значений, переданных:

mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x3a bytes    

Ответы [ 3 ]

20 голосов
/ 09 июля 2014

На самом деле есть встроенный механизм только для этой диагностики.

(1) В свойствах вашего проекта / Debug убедитесь, что установлен флажок «Включить отладку собственного кода»:

enter image description here

(2) Поднимите флаг show-loader-snaps - это ключ реестра в IFEO и доступен через графический интерфейс GlobalFlags:

enter image description here

(3) Запустите приложение и осмотрите ( очень ) детальную панель вывода. Вы можете в основном пропустить до конца или искать «ОШИБКА».

Подробнее здесь .

8 голосов
/ 22 декабря 2009

Вы делаете какой-либо dllimport? - это похоже на проблему с неуправляемой dll, не найденной?

Прежде всего, убедитесь, что все неуправляемые dll или exe-файлы, в которые вы звоните (через dllimport), развернуты в той же папке, что и .Net exe, который вы создаете

Если источник вызывающей сборки недоступен, вы можете попробовать использовать отражатель в этой сборке для поиска операторов dllimport

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

4 голосов
/ 22 декабря 2009

Реализация обработчика для события AppDomain.AssemblyResolve. Он сообщает вам, какую сборку он ищет с ResolveEventArgs.Name. Если это всего лишь попытка устранить неполадки именно этой сборки, используйте Fuslogvw.exe. Если зависание является неуправляемой сборкой, тогда опция профиля DependencyWalker может показать вам, что вызывает вызов LoadLibrary (). ProcMon от SysInternals тоже будет работать, но намного шумнее.

...