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

如何覆盖NuGet包A的依赖,强制使用更高版本Newtonsoft.Json?

强制未声明依赖的NuGet包使用指定版本的依赖包

针对你遇到的场景(PackageReference模式+packages.lock.json,NuGet包A未声明依赖却实际使用Newtonsoft.Json 9.0.1,需强制改用13.0.1),有以下几种可靠解决方案:

1. 项目内显式添加目标依赖包的引用

直接在使用NuGet包A的项目的.csproj文件中,添加Newtonsoft.Json 13.0.1的显式引用:

<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />

执行dotnet restore后,NuGet的依赖解析逻辑会优先采用项目显式声明的版本,包A在运行时会自动绑定到这个版本(.NET的程序集绑定机制会处理版本映射,前提是API兼容)。

2. 强制更新packages.lock.json

如果packages.lock.json已经锁定了旧版本的Newtonsoft.Json,需要强制NuGet重新计算依赖并更新锁文件:

dotnet restore --force-evaluate

这个命令会忽略现有锁文件的缓存,重新解析所有依赖,确保Newtonsoft.Json 13.0.1被写入锁文件。

3. 解决方案级别统一管控版本

如果希望整个解决方案的所有项目都统一使用Newtonsoft.Json 13.0.1,可以在解决方案根目录创建Directory.Packages.props文件,添加全局版本约定:

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
  </ItemGroup>
</Project>

之后所有项目(包括间接引用的场景)都会自动使用这个指定版本,无需逐个项目添加引用。

注意事项

  • 务必测试兼容性:Newtonsoft.Json 9.0.1到13.0.1跨度较大,部分API可能有变更,需要验证包A在使用新版本时是否正常工作。
  • 如果packages.lock.json被设置为只读或受源代码控制保护,更新前需确保有修改权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:15:27