Отладка привязки сборки .NET, также известная как Найдите, какая dll используется и почему

У нас есть некоторые загадочные несоответствия версий в нашей dll, на которую ссылаются, загруженной во время выполнения.

Ошибки типа:

Не удалось загрузить файл или сборку X или одну из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Есть ли способ отладить привязку сборки.

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

  • Версия
  • Место нахождения
  • Кто/что вызвало загрузку (мой код, другая .dll,...)
  • Ну и вообще все, что нужно знать...

person Bertvan    schedule 13.01.2011    source источник


Ответы (2)


Просмотр журнала привязки сборки (он же Fusion Log Viewer, fuslogvw.exe) показывает полезные данные для таких проблем, как:

  • Какой процесс пытается загрузить сборку
  • Полное имя сборки (версия, язык и региональные параметры, токен открытого ключа)
  • Сборка, вызывающая нагрузку
  • Какие пути прощупывались для сборки

Вы можете регистрировать все привязки или только ошибки привязки.

fuslogvw.exe должен быть доступен непосредственно из любой командной строки VS.

person Chris Schmich    schedule 13.01.2011
comment
Действительно, это то, что я искал. - person Bertvan; 14.01.2011
comment
Он недоступен из командной строки Visual Studio 2010 Express. - person knb; 30.04.2011
comment
@knb: он устанавливается как часть Windows SDK. Если он не был установлен как часть вашей установки VS, вы можете найти его в Интернете. - person Chris Schmich; 30.04.2011

Полностью согласен с Крисом, Assembly Binding Log Viewer должен предоставить вам всю необходимую информацию. Кроме того, вы также можете использовать WinDbg + SOS.dll. В основном он используется для отладки, но может быть весьма полезен и в некоторых других случаях, когда вам нужно знать как можно больше информации. Единственная проблема, которая может вас остановить, заключается в том, что у него нет приятного пользовательского интерфейса, такого как отладчик VS :)

Удачи!

person Volodymyr Usarskyy    schedule 13.01.2011