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

我想使用带有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源中有很多修复和新功能.

最佳答案 你想要的正是签署旨在防止的.

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

我认为b)是你最好的投篮.

点赞