我最近升级log4net版本时遇到的问题:
无法解决“log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”与“log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821”之间的冲突。正在随意选择“log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”。
请问大神是什么原因?该怎么解决?折腾了好久。网上相关文章也没少看。
你的程序中还有地方在引用旧版log4net
不是这个原因。
是的。程序中使用了NHibernate,这个版本的NHibernate依赖log4net 1.2.10.0版。单纯升级log4net会造成NHibernate异常。
删除所有引用,然后重新引用同一个版本的log4net,还要注意一些config文件的配置 如果有相关log4net的配置 要改成对应版本的就好了,可以全局搜索一下
删除了所有引用,再添加了新版本的引用。而且工程文件,配置文件都考虑到了,还是不行。不知道这个1.2.10.0的相关信息记录在哪,全局都搜不到。
解决了。log4net 1.2.13.0有两种版本,一个oldkey,一个newkey,区别在于PublicKeyToken不同,oldkey的PublicKeyToken跟1.2.10.0是一样的(都是1b44e1d426115821),newkey的PublicKeyToken=669e0ddf0bb1aa2a。我只是选择了使用oldkey那版,然后在相应的项目文件中启动自动绑定重定向(如果不了解什么事自动绑定重定向请自己找资料),然后就OK了。至于这中间的原理及隐含的知识点我也不太懂。比如为什么换一个PublicKeyToken就不认了?我把1.2.10.0版全从解决方案中移除了,相当于从没使用过1.2.10.0,为什么程序还记得,它的遗留信息在哪里记着?知识全面精细方能不惑。努力!