3

我们在运行时加载的引用 dll 上有一些神秘的版本不匹配。

像这样的错误:

无法加载文件或程序集 X 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

有没有办法调试程序集绑定。

换句话说,我如何知道有关已加载程序集的以下详细信息:

  • 版本
  • 地点
  • 谁/什么导致了加载(我的代码,另一个 .dll,...)
  • 好吧,几乎所有其他事情都需要知道......
4

2 回答 2

6

程序集绑定日志查看器(又名 Fusion 日志查看器,fuslogvw.exe)显示这些问题的有用数据,例如:

  • 什么进程正在尝试加载程序集
  • 程序集的全名(版本、文化、公钥令牌)
  • 导致负载的程序集
  • 为程序集探测了哪些路径

您可以记录所有绑定或仅记录绑定失败。

fuslogvw.exe 应该可以直接从任何 VS 命令提示符访问。

于 2011-01-13T11:00:23.710 回答
2

完全同意 Chris,Assembly Binding Log Viewer应该为您提供所需的所有信息。此外,您还可以使用 WinDbg + SOS.dll。大多数情况下,它用于调试,但在您需要了解尽可能多的信息时,它在其他一些情况下会非常有用。唯一可以阻止你的问题是它没有像 VS 调试器这样好的 UI :)

祝你好运!

于 2011-01-13T13:34:34.743 回答