我花了最后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程序集的正确版本和签名.
我不知道我还能做什么,但是我很沮丧,因为日志库阻止了我的应用程序运行.
我错过了什么?
我在通过NuGet升级log4net之后遇到了这个问题,但却发现较新的版本是用不同的密钥签名的.叹.出于某种原因,当我部署到实时服务器时,这种情况才变得明显,它在开发过程中没有出现.
您可以从apache log4net站点获取"oldkey"版本.只需从项目文件中获取您的引用,然后引用oldkey版本.
这是我的解决方案:我从 log4net 更改为 Common.Logging 到 NLog。这并没有花费太多的努力,我认为也没有必要,但它确实有效,而且效果很好。
| 归档时间: |
|
| 查看次数: |
10412 次 |
| 最近记录: |