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

.NET 4.8中Azure.AI.FormRecognizer加载DiagnosticSource 6.0.0.0失败

解决.NET 4.8中Azure.AI.FormRecognizer的DiagnosticSource版本绑定异常问题

以下是针对该问题的具体解决步骤:

  • 修正绑定重定向配置
    把app.config里的绑定重定向范围扩大,确保覆盖6.0.0.0版本,配置如下:

    <dependentAssembly>
      <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
    </dependentAssembly>
    

    原配置的oldVersion只到6.0.0.1,未包含6.0.0.0,导致重定向无法生效。

  • 确认NuGet依赖版本
    打开项目的NuGet包管理器,检查System.Diagnostics.DiagnosticSource是否确实安装了6.0.1版本,同时卸载任何其他版本的该组件,避免版本冲突。另外手动安装Azure.Core 1.34.0或更高兼容版本,确保依赖链正确。

  • 清理并重新生成项目

    1. 删除项目目录下的bin和obj文件夹
    2. 清理NuGet缓存(可通过NuGet包管理器设置中的清理按钮,或执行命令dotnet nuget locals all --clear)
    3. 重新生成整个解决方案,确保所有依赖文件正确复制到输出目录
  • 排查其他依赖冲突
    查看项目的完整依赖树(NuGet包管理器中选择“查看依赖项”,或执行dotnet list package --include-transitive),确认是否有其他第三方组件强制依赖System.Diagnostics.DiagnosticSource 6.0.0.0,如果有,尝试将该组件更新到兼容6.0.1版本的最新版。

  • 极端情况:手动干预程序集加载
    如果以上方法都无效,可在程序启动时添加程序集解析逻辑,强制加载已安装的版本:

    AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
    {
        var assemblyName = new AssemblyName(args.Name);
        if (assemblyName.Name == "System.Diagnostics.DiagnosticSource" && assemblyName.Version == new Version(6, 0, 0, 0))
        {
            return Assembly.LoadFrom(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "System.Diagnostics.DiagnosticSource.dll"));
        }
        return null;
    };
    

    将这段代码放在程序入口(如Program.Main开头)或AzureOcr类的静态构造函数中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:57:01