当第三方lib依赖于旧版本时,使用具有新publicKeyToken的另一版本的程序集

时间:2010-11-18 12:52:09

标签: .net nhibernate log4net

我想使用带有nhibernate的新版本的log4net。 log4net版本是我自己从svn源编译的,所以我必须使用新密钥对其进行签名,这意味着更改了publicKeyToken。我还将版本设置为1.2.11.0。问题是nhibernate引用了旧的1.2.10.0版本的log4net。

我尝试在app.config中配置此部件的程序集绑定重定向:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="log4net"
                      publicKeyToken="1b44e1d426115821"/>
    <bindingRedirect oldVersion="1.2.10.0"
                     newVersion="1.2.11.0"/>
  </dependentAssembly>
</assemblyBinding>

然而它似乎没有任何效果。我认为这是因为publicKeyToken不匹配。

有没有其他方法可以做到这一点或做到: 一个。使用log4net 1.2.10并使用我感兴趣的svn代码库中的添加和修复创建一个log4net扩展项目? 要么 湾使用我自己的log4net构建构建我自己的nhibernate版本 要么 C。让log4net团队使用正确的publicKeyToken

发布新版本的log4net

我更喜欢c。老实说,我无法理解为什么他们没有多年发布新版本,svn源中有很多修复和新功能。

1 个答案:

答案 0 :(得分:2)

你想要的正是签署旨在防止的。

请注意,您的选项c)还需要新的Hibernate构建。

我认为b)是你最好的镜头。