调试.NET程序集绑定又名查找使用的DLL和原因

时间:2011-01-13 10:58:19

标签: .net dll assemblybinding

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

错误如:

  

无法加载文件或程序集X或其某个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

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

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

  • 位置
  • 是谁/是什么导致了加载(我的代码,另一个.dll,...)
  • 嗯,几乎所有其他事情都要知道...

2 个答案:

答案 0 :(得分:4)

Assembly Binding Log Viewer(又名Fusion Log Viewer,fuslogvw.exe)显示了这些问题的有用数据,例如:

  • 尝试加载程序集的过程
  • 程序集的全名(版本,文化,公钥标记)
  • 导致负载的程序集
  • 为集会探测了哪些路径

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

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

答案 1 :(得分:2)

完全同意Chris,程序集绑定日志查看器应该为您提供所需的所有信息。此外,您还可以使用WinDbg + SOS.dll。它主要用于调试,但在需要了解尽可能多的信息时,在其他一些情况下非常有用。 可能阻止你的唯一问题是它没有像VS调试器那样的优秀用户界面:)

祝你好运!