Asp.net Newtonsoft.Json中的程序集冲突

Asp.net Newtonsoft.Json中的程序集冲突,asp.net,.net,sitecore,Asp.net,.net,Sitecore,更新Newtonsoft.Json后,程序集发生冲突。我很难理解错误中引用的特定版本来自何处。web.config中没有指向特定版本的内容 System.IO.FileLoadException:无法加载文件或程序集 'Newtonsoft.Json,版本=3.5.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之一。这个 定位程序集的清单定义与程序集不匹配 参考资料。(来自HRESULT的异常:0x8013100) 忽略这两个版本的程序集可以解决

更新Newtonsoft.Json后,程序集发生冲突。我很难理解错误中引用的特定版本来自何处。web.config中没有指向特定版本的内容

System.IO.FileLoadException:无法加载文件或程序集 'Newtonsoft.Json,版本=3.5.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之一。这个 定位程序集的清单定义与程序集不匹配 参考资料。(来自HRESULT的异常:0x8013100)


忽略这两个版本的程序集可以解决问题吗?

忽略这两个版本可能会奏效,但会造成维护噩梦。别这样

我认为你有两个选择:

  • 使用Sitecore随附的版本,该版本将取决于您正在运行的Sitecore版本
  • 保持一个sitecore版本不变,并使用ilmerge将所需的Newtonsoft.Json版本与您自己的程序集相结合
  • 如果您不需要库的任何最新功能,如(动力学…等)

    如marto的回答,我建议您使用1,您可以重定向程序集。我以前在Newtonsoft和Sitecore上做过这件事,没有任何问题。你可以看看我的电脑在哪里工作

    您对web.config文件中的以下行特别感兴趣:

    
    
    是否无法重定向程序集版本?我不知道它会对Sitecore产生什么影响(如果有的话)。。。您可以尝试,但程序集的两个版本都需要具有相同的公共令牌。我不确定情况是否如此。此外,你还需要考虑SITECORE是用旧版本测试的,JSON.NET的更新版本有了突破性的变化,所以你可以通过将程序重新定向为“CasyykAM”来破坏某些东西,SITECORE。谢谢@ Sean Kearney。您的web.config文件将我们从dll地狱中解救出来。显然,如果您需要降级(在我的情况下是这样的),也可以使用相反的方法…oldVersion=“0.0.0.0-6.0.0.0”newVersion=“4.5.0.0”
    <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>