调试 .NET 程序集绑定又名查找使用的 dll 以及原因
我们在运行时加载的引用 dll 上遇到了一些神秘的版本不匹配问题。
错误如:
无法加载文件或程序集 X 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
是否有任何方法可以调试程序集绑定。
换句话说,我如何知道有关加载的程序集的以下详细信息:
- 版本
- 位置
- 谁/什么导致了加载(我的代码,另一个 .dll,...)
- 好吧,几乎所有其他需要知道的...
We're having some mystery version mismatches on our referenced dll's loaded at runtime.
Errors like:
Could not load file or assembly X or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Is there any way to debug the assembly binding.
In other words, how can I know the following details about loaded assemblies:
- Version
- Location
- Who/What caused the loading (my code, another .dll, ...)
- Well, just about everything else there is to know...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
程序集绑定日志查看器(又名Fusion Log Viewer (fuslogvw.exe) 显示此类问题的有用数据,例如:
您可以记录所有绑定或仅记录绑定失败。
fuslogvw.exe 应该可以从任何 VS 命令提示符直接访问。
The Assembly Binding Log Viewer (aka Fusion Log Viewer, fuslogvw.exe) shows useful data for these sorts of issues such as:
You can log all binds or just bind failures.
fuslogvw.exe should be accessible directly from any VS command prompt.
完全同意克里斯的观点,程序集绑定日志查看器应该为您提供所需的所有信息。此外,您还可以使用WinDbg + SOS.dll。它主要用于调试,但在其他一些情况下,当您需要了解尽可能多的信息时,它可能非常有用。
唯一可能阻止你的问题是它没有像 VS 调试器那样漂亮的 UI :)
祝你好运!
Totally agree with Chris, Assembly Binding Log Viewer should give you all information you need. In addition you could also use WinDbg + SOS.dll. Mostly it's used for debugging but can be quite useful in some other cases when you need to know as much information as possible.
The only problem that could stop you is that it doesn't have nice UI like VS debugger :)
Good luck!