升级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
相关产品推荐
相关产品推荐

