dll版本冲突解决
原来存在website->MSMQ这一条线,后来需要新增medNet->job->MSMQ这一条线,对log4net的依赖关系如下图:
由于message和job引用的是不同版本的log4net.dll,所以,在job发送消息时,就会报 无法加载Log4net(1.2.10.0)的dll,这个是因为,程序运行时,没有加载Log4net(1.2.10.0)的dll,所以找不到。
解决办法有两个:
1、使用版本号兼容: <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
2、同时制定两个版本的dll位置:
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
<codeBase version="1.2.10.0" href="log4net_v2.10/log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
<codeBase version="1.2.14.0" href="log4net_v2.14/log4net.dll" />
</dependentAssembly>
第二种方案有风险,请慎用。因为两个dll都被加载后,对象转换时,会存在invalidCastException