System.Net.Http.Formatting.dll导致Newtonsoft.Json

时间:2015-06-22 09:48:52

标签: c# asp.net asp.net-mvc json.net

我的Windows服务与MVC项目在同一解决方案中。

MVC项目使用SignalR Client的引用,需要Newtonsoft.Json v6 +

Windows服务使用System.Net.Http.Formatting,这需要Newtonsoft.Json版本4.5.0.0。

我认为这不会有问题,因为我可以在我的App.Config中使用绑定重定向,但是我收到错误

  

发生了类型为“System.IO.FileLoadException”的未处理异常   在System.Net.Http.Formatting.dll

中      

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

我的app.config有以下内容:

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

我自己添加了它,并且它不起作用,我也尝试使用nuget包管理器卸载并重新安装Json.Net,但无济于事

3 个答案:

答案 0 :(得分:3)

我们遇到了同样的错误并且努力修复了几天。最后我们在堆栈溢出Assembly reference cannot be resolved - dependentAssembly issue?

上发现了这篇文章

这让我们意识到要查看正在使用的System.Net.Http.Formatting版本,我们发现我们的解决方案一直在使用System.Net.Http.Formatting.dll的多个版本,而且每个版本都引用了不同版本的{{1} }}。

删除旧版Newtonsoft.Json.dll的引用并添加引用,修复了问题。

希望有所帮助。

答案 1 :(得分:0)

assemblyBinding标记是否具有正确的xmlns架构?检查您遇到的问题是否与Assembly binding redirect does not work

相同

答案 2 :(得分:0)

@ chintan123实际上为我指明了正确的方向,事实证明,尽管我正在创建的类库同时引用了System.Net.Http.FormattingNewtonsoft.Json,但只有前者被复制到{需要它的调用项目的{1}}目录。

在主调用项目中添加对bin的引用即可解决此问题。