绑定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"/>
你对测试有什么建议/解决方案吗?谢谢你!问候。
作为变通:
- 我在Github上下载了Gelf4net源代码
- 将json.net dll替换为5.0.0 重新编译
- 添加新的dll到我的项目
工作完美,避免使用同一个程序集的多个版本!