关于log4net 1.2.11的另一个问题是冲突

Jer*_*acs 14 c# log4net gac

我花了最后2个小时在SO上查看这些问题,似乎没有任何工作.

我有一个使用log4net 1.2.11,通过NuGet的解决方案.它在我运行Windows 7的32位开发工作站上运行良好.它不能在我的64位Windows 2008 R2测试系统上运行.我得到的错误是:

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'log4net,Version = 1.2.11.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.

我正在查看我的测试系统上的应用程序目录.该log4net.dll文件的版本为1.2.11.

GAC中的版本是1.2.10版.我删除了它.我的开发服务器上有一个版本,还有其他东西; 我也删除了它.我重建了; 我已经重新部署了.我已经添加了

<dependentAssembly>
    <assemblyIdentity name="log4net" publicKeyToken="669E0DDF0BB1AA2A" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.11.0"/>
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

到我的配置文件.似乎没有什么区别.我的部署项目显示正在部署的log4net程序集的正确版本和签名.

我不知道我还能做什么,但是我很沮丧,因为日志库阻止了我的应用程序运行.

我错过了什么?

kei*_*041 6

我在通过NuGet升级log4net之后遇到了这个问题,但却发现较新的版本是用不同的密钥签名的.叹.出于某种原因,当我部署到实时服务器时,这种情况才变得明显,它在开发过程中没有出现.

您可以从apache log4net站点获取"oldkey"版本.只需从项目文件中获取您的引用,然后引用oldkey版本.


Jer*_*acs 4

这是我的解决方案:我从 log4net 更改为 Common.Logging 到 NLog。这并没有花费太多的努力,我认为也没有必要,但它确实有效,而且效果很好。

  • 请参阅 @keithl8041 的答案,了解此问题的实际解决方案而不是解决方法。:) (3认同)