调试 .NET 程序集绑定,也就是查找使用了哪个 dll 以及为什么使用它。

3
我们在运行时引用的dll出现了一些神秘的版本不匹配问题。
错误信息如下:
“无法加载文件或程序集X或其某个依赖项。找到的程序集清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)”
有没有办法调试程序集绑定呢?
换句话说,我如何知道以下已加载程序集的详细信息:
- 版本 - 位置 - 是谁/什么导致了加载(我的代码,其他.dll等) - 嗯,就是所有可以知道的东西...
2个回答

6
"

装配绑定日志查看器(也称融合日志查看器,fuslogvw.exe)可以显示这些问题的有用数据:

  • 哪个进程正尝试加载一个程序集
  • 程序集的完整名称(版本、文化、公钥标记)
  • 导致加载的程序集
  • 为程序集探测的路径

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

在任何 VS 命令提示符中都可以直接访问 fuslogvw.exe。

"

确实,这就是我在寻找的。 - Bertvan
它无法从Visual Studio 2010 Express命令提示符中获取。 - knb
@knb:它作为Windows SDK的一部分安装。如果它没有作为您的VS安装的一部分安装,您可以在网上找到它。 - Chris Schmich

2
完全同意Chris的观点,程序集绑定日志查看器应该可以提供您所需的所有信息。此外,您还可以使用WinDbg + SOS.dll。它通常用于调试,但在某些情况下,当您需要尽可能多的信息时,它也可能非常有用。
唯一可能阻止您的问题是它没有像VS调试器那样好的用户界面 :)
祝你好运!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接