我对我的项目进行了一些更改,需要将Newtonsoft更新到版本10.0.2。我的项目在本地运行正常,但是当我尝试通过Jenkins在我的测试环境中构建它时,构建失败并且网站引发了500错误:
无法加载文件或程序集“Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
当我运行nuget来安装软件包时,对Newtonsoft.Json的更改是在三个文件中进行的:src / MySite.Library / packages.config,web / Website / packages.config和web / Website / MySite.csproj:< / p>
packages.config:
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
的csproj:
<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>
我尝试修改web.config以查看是否会修复500错误,因为我注意到它仍在使用旧版本:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
我将此更改为
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.2" />
</dependentAssembly>
在我更改web.config之前,错误显示“无法加载文件或程序集'Newtonsoft.Json,Version = 4.5.0.0”。当我将配置更改为10.0.2时,它现在显示“无法加载文件或程序集'Newtonsoft.Json,Version = 6.0.0.0”
答案 0 :(得分:0)
这是我之前遇到过的一个问题。 Newtonsoft实际上从未将次要版本号放入其组合中。只需将新的绑定重定向更改为:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
答案 1 :(得分:0)
我运行了Update-Package –reinstall Newtonsoft.Json
,并更新了以前没有更改过的几个app.config文件。一旦我使用较新的Newtonsoft.Json版本签入更新的app.config文件,构建成功。