2009-12-22 2 views
16

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

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  

ответ

11

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

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

enter image description here

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

enter image description here

(3) Запустите приложение и проверьте (самые) Verbos e. Вы можете в основном пропустить до конца или искать «ERROR».

Подробнее here.

+3

Жаль, что я не смог +10 это – smirkingman

+2

У нас было двое разработчиков, стучащими в голову о проблему, и это прямо указывало нам на ответ. Спасибо! –

8

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

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

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

Другие, чем вы могли бы хотеть, чтобы позволить зрителю журнала fustion отслеживать проблемы загрузки сборки - см этот blog post и msdn page для более подробной информации

+0

К сожалению, у меня нет доступа к источнику этой DLL. Если есть какой-то способ определить, какая сборка не была загружена, это будет очень полезно. – BlueTrin

+0

Спасибо, Ричард, эти две ссылки были очень полезными. – BlueTrin

3

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

+0

Спасибо за ответ yoru, я выбрал ответ Ричарда, потому что я просто посмотрел на его сообщения и смог использовать журналы fusiion. – BlueTrin

Смежные вопросы