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

.NET Standard 2.0项目如何指定引用NuGet包中Library B的v2.0版本

强制让项目引用Library B v2.0的方法

首先得明确:你之前设置的AutoGenerateBindingRedirects和GenerateBindingRedirectsOutputType对.NET Standard类库基本没用,因为绑定重定向是宿主应用程序(比如.NET Framework控制台/WinForm、.NET Core/.NET 5+应用)负责处理的,类库本身不会生成或应用这些重定向。

下面是几种可行的解决办法:

1. 显式在项目里引用Library B v2.0

直接在你的.NET Standard项目文件(.csproj)里添加对Library B v2.0的引用,NuGet会优先使用你显式指定的版本,覆盖依赖链里的v1.9:

<ItemGroup>
  <!-- 替换成实际的包名和版本号 -->
  <PackageReference Include="LibraryB" Version="2.0.0" />
</ItemGroup>

添加后重新构建项目,检查*deps.json,应该会指向v2.0了。

2. 针对宿主应用配置绑定重定向(如果你的类库被其他应用引用)

如果这个.NET Standard类库是被某个应用程序(比如.NET Framework app)引用的,需要在宿主应用的配置文件里手动添加绑定重定向:
打开宿主应用的app.config/web.config,在<runtime>节点里添加:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <!-- 替换成Library B的实际程序集信息 -->
    <assemblyIdentity name="LibraryB" publicKeyToken="你的公钥令牌" culture="neutral" />
    <!-- 把旧版本范围改成你需要覆盖的版本,这里是从0到1.9 -->
    <bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

如果是.NET Core/.NET 5+的宿主应用,不需要手动加这个,运行时会自动处理版本统一,但你还是需要确保宿主应用也引用了Library B v2.0,或者通过NuGet的依赖解析自动升级。

3. 调整NuGet依赖解析策略

如果上面的方法没用,可以在项目文件里添加配置,强制NuGet优先选择最高兼容版本:

<PropertyGroup>
  <!-- 强制NuGet使用最高兼容版本 -->
  <DependencyVersion>Highest</DependencyVersion>
</PropertyGroup>

不过这个作用有限,还是显式引用最靠谱。

最后提醒:一定要确认Library B v2.0和Library A v1.9是兼容的,不然可能会出现运行时异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:40:14