Подтвердить что ты не робот

Не удалось загрузить процедуру, импортированную {myassembly}

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

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    
4b9b3361

Ответ 1

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

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

enter image description here

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

enter image description here

(3) Запустите приложение и осмотрите (очень) подробную панель вывода. Вы можете в основном пропустить до конца или искать "ERROR".

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

Ответ 2

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

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

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

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

Ответ 3

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