我的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,但无济于事
答案 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.Formatting
和Newtonsoft.Json
,但只有前者被复制到{需要它的调用项目的{1}}目录。
在主调用项目中添加对bin
的引用即可解决此问题。