在项目

时间:2018-01-05 15:21:56

标签: c# .net json json.net dependencies

我对我的项目进行了一些更改,需要将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”

2 个答案:

答案 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文件,构建成功。