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

升级Newtonsoft.Json至10.0.2后Jenkins构建报错500求助

解决Newtonsoft.Json升级后测试环境500错误的方案

我之前碰到过几乎一模一样的问题!核心原因是程序集绑定重定向配置错误,再加上Jenkins构建环境可能残留了旧版本文件,一步步来解决:

1. 修正web.config的绑定重定向(最关键的一步)

你之前修改的newVersion="10.0.2"是错误的——这里要填的是程序集版本号,不是NuGet包的版本号!从Newtonsoft.Json 9.x开始,NuGet包版本和程序集版本就不一致了:比如你安装的10.0.2包,对应的程序集版本是10.0.0.0(看你提供的csproj里的Reference节点就能确认)。

把web.config里的绑定重定向改成下面这样:

<dependentAssembly>
  <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>

2. 检查所有项目的引用一致性

  • 确认所有引用Newtonsoft.Json的项目(不仅仅是你提到的三个文件)的packages.config都已经升级到10.0.2版本,没有遗漏的项目还引用6.0.0或4.5版本:
    <package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
    
  • 检查每个项目的.csproj文件,确保Reference节点的版本和HintPath都正确指向10.0.2的包:
    <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    

3. 清理Jenkins构建环境的旧文件

本地运行正常但Jenkins构建失败,大概率是构建目录残留了旧版本的dll:

  • 在Jenkins构建脚本开头添加清理步骤,删除工作目录下的bin、obj和packages文件夹,彻底清除旧文件。
  • 确保构建时先执行nuget restore命令,保证所有依赖包都是最新的10.0.2版本,避免还原不完整。

4. 验证输出目录的dll版本

构建完成后,去测试环境的网站bin目录找到Newtonsoft.Json.dll,右键查看属性:

  • 文件版本应该是10.0.2.0
  • 程序集版本应该是10.0.0.0
    如果不是这个版本,说明Jenkins构建时还是复制了旧dll,需要检查构建脚本的复制逻辑。

额外排查点

如果上面的步骤都做完还是报错,那可能是有第三方组件依赖了旧版本的Newtonsoft.Json:

  • 检查项目中引用的其他NuGet包或第三方dll,看它们是否明确依赖6.0.0版本的Newtonsoft.Json,这种情况下需要更新这些组件到兼容10.x版本的版本。

内容的提问来源于stack exchange,提问作者Erica Stockwell-Alpert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:19:12