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

时间:2014-07-10 14:25:16

标签: c# .net api json.net assembly-binding-redirect

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

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

然后我从掘金更新了牛顿软件,但我得到了一个例外,说我无法加载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放入配置中。 得到例外。

我在MS网站上看到了这个

<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"/>

你会有任何建议/解决方案来测试吗? 谢谢 ! 问候。

1 个答案:

答案 0 :(得分:1)

作为解决方法:

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

工作完美,避免使用同一组件的多个版本!