Newtonsoft.Json中的装配冲突

时间:2012-12-14 13:16:12

标签: asp.net .net sitecore

我们在更新Newtonsoft.Json后遇到了程序集冲突。我无法理解错误中引用的特定版本来自何处。 web.config中没有任何内容指向特定版本。

  

System.IO.FileLoadException:无法加载文件或程序集   'Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,   PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个依赖项。该   找到程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

GAC会使两个版本的程序集解决问题吗?

2 个答案:

答案 0 :(得分:17)

作为marto答案中的@jammykam commented,您可以重定向程序集。过去我和Newtonsoft以及Sitecore没有遇到任何问题。您可以查看我工作的Sitecore Content as Service code

您对web.config文件中的这些行特别感兴趣: https://github.com/HedgehogDevelopment/sitecore-content-service/blob/master/Sitecore/Web/Web.config#L3499

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

答案 1 :(得分:3)

GAC他们可能会工作,但它会造成维护噩梦。不要这样做!

我认为你有两个选择:

  1. 使用Sitecore附带的版本,该版本取决于您运行的Sitecore版本。
  2. 保持一个sitecore版本不变,并使用ilmerge将您需要的Newtonsoft.Json版本与您自己的程序集相结合。
  3. 如果您不需要图书馆的任何最新功能(如动态...等),我会建议1