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

.NET Framework项目同csproj解决Bond.Core.CSharp多版本依赖冲突

.NET Framework 4.7.2 项目NuGet传递依赖版本冲突解决方法

这个冲突是NuGet依赖解析与.NET Framework运行时版本校验机制共同导致的,Bond.Core.CSharp 9.0.3为同主版本下的补丁更新,完全向后兼容9.0.1,按以下步骤配置即可让两个包正常运行:

  • 1. 强制NuGet解析到统一版本的依赖

    不要依赖NuGet自动解析传递依赖版本,直接在项目中显式添加对Bond.Core.CSharp 9.0.3的直接包引用,NuGet会优先使用项目直接引用的版本,覆盖所有传递依赖的版本要求。
    在.csproj文件中添加如下配置:
    <ItemGroup>
      <!-- 保留原有两个包的引用 -->
      <PackageReference Include="Package1" Version="你实际使用的Package1版本号" />
      <PackageReference Include="Package2" Version="你实际使用的Package2版本号" />
      <!-- 显式指定冲突依赖的统一版本 -->
      <PackageReference Include="Bond.Core.CSharp" Version="9.0.3" />
    </ItemGroup>
    
  • 2. 配置程序集绑定重定向

    .NET Framework运行时默认会严格匹配程序集编译时引用的版本号,仅靠NuGet解析到高版本dll仍会在运行时抛出找不到9.0.1版本程序集的异常,必须配置绑定重定向将所有低版本引用映射到9.0.3。
    最快的配置方式是打开Visual Studio的包管理器控制台,执行以下命令自动生成全量合法的绑定重定向:
    Get-Project -Name 你的项目名称 | Add-BindingRedirect
    
    执行完成后打开项目的app.config或web.config,确认<runtime>节点下生成了Bond.Core.CSharp对应的重定向规则,示例如下:
    <dependentAssembly>
      <assemblyIdentity name="Bond.Core.CSharp" publicKeyToken="991b3d7825d367d1" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-9.0.3" newVersion="9.0.3" />
    </dependentAssembly>
    
    手动配置时注意替换publicKeyToken为你本地引用的Bond.Core.CSharp程序集对应的实际公钥标记,可直接在VS对象浏览器中找到对应dll查看属性获取。
  • 3. 清理验证

    1. 关闭VS,删除项目目录下的bin、obj文件夹,清除旧版本dll缓存
    2. 重新打开项目执行NuGet还原,重新生成项目
    3. 检查输出目录下的Bond.Core.CSharp.dll属性,确认版本为9.0.3,运行项目测试两个包的相关功能即可
  • 异常兼容

    如果NuGet还原时提示NU1608(依赖版本与包声明要求不匹配)警告,可在.csproj的第一个<PropertyGroup>节点下添加如下配置忽略该警告,版本兼容前提下该警告无实际影响:
    <NoWarn>$(NoWarn);NU1608</NoWarn>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:57:12