调试 .NET 程序集绑定又名查找使用的 dll 以及原因

发布于 2024-10-11 23:34:26 字数 319 浏览 3 评论 0原文

我们在运行时加载的引用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泛滥成性 2024-10-18 23:34:26

程序集绑定日志查看器(又名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:

  • What process is trying to load an assembly
  • The full name of the assembly (version, culture, public key token)
  • The assembly that's causing the load
  • Which paths were probed for the assembly

You can log all binds or just bind failures.

fuslogvw.exe should be accessible directly from any VS command prompt.

弄潮 2024-10-18 23:34:26

完全同意克里斯的观点,程序集绑定日志查看器应该为您提供所需的所有信息。此外,您还可以使用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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文