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

求助:C#跨.NET版本项目运行时缺失SMDiagnostics程序集报错

解决SMDiagnostics程序集加载失败问题

针对你的ClientDesktop项目(net7.0-windows)启动时出现的System.IO.FileNotFoundException: 未能加载文件或程序集“SMDiagnostics, Version=4.0.0.0...”错误,可尝试以下解决方案:

  • 安装WCF相关NuGet包
    SMDiagnostics是WCF诊断组件的一部分,.NET 7中WCF组件不再默认包含,需手动安装对应NuGet包:
    在ClientDesktop项目的NuGet包管理器中搜索并安装System.ServiceModel.Diagnostic包,安装完成后清理重建项目。

  • 添加程序集绑定重定向
    在ClientDesktop项目的app.config文件中添加SMDiagnostics的绑定重定向配置,强制加载兼容版本:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="SMDiagnostics" publicKeyToken="b77a5c561934e089" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
  • 手动复制程序集到输出目录
    从本地.NET Framework 4.8安装目录(通常为C:\Windows\Microsoft.NET\Framework\v4.0.30319)找到SMDiagnostics.dll,将其复制到ClientDesktop项目的bin/Debug/net7.0-windows(或Release对应目录)下,再启动项目。

  • 排查跨框架依赖冲突
    由于你的服务端和DatabaseLib是.NET Framework 4.8,而ClientDesktop是.NET 7,可能存在跨框架依赖版本不兼容的情况:

    • 检查DatabaseLib中是否引用了WCF相关组件,确保ClientDesktop引用的对应包版本与之兼容;
    • 移除ClientDesktop中不必要的旧框架引用,避免版本混淆。
  • 启用程序集加载日志定位根因
    使用.NET Framework的Fuslogvw.exe(程序集绑定查看器)查看SMDiagnostics加载失败的详细日志:

    1. 以管理员身份运行Fuslogvw.exe;
    2. 在设置中勾选“启用程序集绑定失败日志”,选择“日志到磁盘”;
    3. 重新启动ClientDesktop项目,查看生成的日志,明确加载失败的具体原因(如版本不匹配、路径错误等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:07:12