You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MissingMethodException:如何确定.NET尝试查找的B.dll程序集版本?

确定.NET查找方法时对应的目标程序集版本

当程序集"A.dll"因依赖的"B.dll"中"Do()"方法缺失抛出MissingMethodException时,可通过以下几种可靠方式定位.NET实际尝试加载的"B.dll"具体版本:

1. 提取异常的完整细节

默认的MissingMethodException消息通常会包含目标方法的完整签名及期望的程序集强名称信息,例如:

未找到方法“Void B.Do()”,该方法属于程序集“B, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx”。

若默认消息信息不足,可在代码中捕获异常后调用Exception.ToString(),输出的完整堆栈会明确标注.NET尝试查找的程序集版本、公钥令牌等关键标识。

2. 使用程序集绑定日志查看器(Fuslogvw.exe)

这是.NET官方自带的程序集绑定跟踪工具,操作步骤如下:

  • 以管理员权限打开命令提示符,运行fuslogvw.exe;
  • 点击界面中的「设置」,选择「记录所有绑定失败」或「记录所有绑定」;
  • 重新运行触发异常的应用程序;
  • 回到工具界面刷新列表,找到对应"B.dll"的绑定记录,查看详情即可获取.NET尝试加载的版本、查找路径及绑定失败原因。

3. 订阅程序集加载事件输出日志

通过代码订阅AppDomain的程序集加载事件,实时输出.NET尝试加载的程序集信息:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
    Console.WriteLine($"尝试加载程序集: {args.Name}");
    // 返回null让默认加载逻辑继续执行
    return null;
};

触发异常后,查看控制台输出即可找到.NET尝试加载的"B.dll"完整标识(含版本、公钥令牌等)。

4. 检查应用配置文件的版本重定向规则

查看app.config或web.config中的<assemblyBinding>节点,确认是否存在对"B.dll"的版本重定向配置:

<dependentAssembly>
    <assemblyIdentity name="B" publicKeyToken="xxxxxx" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>

若存在重定向规则,结合异常信息即可确认.NET实际尝试加载的目标版本。


内容的提问来源于stack exchange,提问作者Vladimir Gulyaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:33:15