【问题标题】:System.Net.Http.Formatting.dll causing issues with Newtonsoft.JsonSystem.Net.Http.Formatting.dll 导致 Newtonsoft.Json 出现问题
【发布时间】:2015-09-07 17:17:46
【问题描述】:

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

MVC 项目使用对 SignalR 客户端的引用,它需要 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,版本=4.5.0.0,文化=中性, 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,但无济于事

【问题讨论】:

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


    【解决方案1】:

    我们遇到了同样的错误,并努力修复了几天。我们终于在堆栈溢出上找到了这篇帖子Assembly reference cannot be resolved - dependentAssembly issue?

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

    删除旧版本 System.Net.Http.Formatting 的引用并重新添加引用,解决了问题。

    希望对您有所帮助。

    【讨论】:

    • 我不得不删除 NuGet 包以及它所依赖的包,从我网站的 Bin 目录中删除 Newtonsoft DLL,并从 web.config 底部删除程序集信息。然后我安装了 depending NuGet 包,它引入了它最喜欢的 Newtonsoft 版本。然后一切正常。
    【解决方案2】:

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

    【讨论】:

    • 我没有写在程序集绑定上的 xmlns,因为它应该可以在没有它的情况下工作,没关系,那行得通。你为我节省了几个小时,谢谢:)
    【解决方案3】:

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

    向主调用项目添加对 Newtonsoft.Json 的引用解决了该问题。

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 2012-11-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多