绑定json.net从6.0.0到4.5.5的重定向

本文关键字:json 重定向 绑定 net | 更新日期: 2023-09-27 18:12:25

我正在使用。net开发一个API对于这个项目,我还需要使用log4net和gelf4net。

WebAPI使用Newtonsoft。json V4.5.0.0gelf4net使用Newtonsoft 6.0.0

然后我更新Newtonsoft从nugget,但我得到一个异常说Newtonsoft。Json 4.5.0.0无法加载,这是正常的,因为我更新。

我做了一些研究,看到了绑定重定向的东西。我试过一个,但不幸的是,我没有找到如何使它工作…

在这里:

<runtime>
<assemblyBinding>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"  />
    <codeBase version="4.5.0.0" href="bin'json.net'Newtonsoft.Json.dll" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0"/>
    <codeBase version="6.0.0.0" href="bin'Newtonsoft.Json.dll" />
  </dependentAssembly>
</assemblyBinding>
</runtime>

我将旧版本放到bin的子文件夹中,并将href放到config ..仍然得到异常

我在微软网站上看到的

<configuration>
 <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
        <assemblyIdentity name="myAssembly"
                          publicKeyToken="32ab4ba45e0a69a1"
                          culture="neutral" />
        <bindingRedirect oldVersion="1.0.0.0"
                         newVersion="2.0.0.0"/>
     </dependentAssembly>
  </assemblyBinding>
 </runtime>
</configuration>

我只是不明白,因为不可能添加两次相同的汇编(甚至不同的版本),所以第二个应该位于哪里?编辑:

也尝试使用简单的:

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

你对测试有什么建议/解决方案吗?谢谢你!问候。

绑定json.net从6.0.0到4.5.5的重定向

作为变通:

  • 我在Github上下载了Gelf4net源代码
  • 将json.net dll替换为5.0.0
  • 重新编译
  • 添加新的dll到我的项目

工作完美,避免使用同一个程序集的多个版本!