Отладка привязки сборки .NET aka Найдите, какая dll используется и почему - PullRequest
3 голосов
/ 13 января 2011

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

Ошибки типа:

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 13 января 2011

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

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

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

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

2 голосов
/ 13 января 2011

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

...