我现在第二天一直在这,我几乎放弃了。我已经阅读了许多与不同库有关的线程,这些库依赖于不同的Log4Net.dll版本,ClickOnce部署和程序集绑定重定向,到目前为止我找到的答案/建议都没有。希望这里有人能够发光:)
我想解决的问题:
我们有一个内部winforms应用程序.NET 4.0,它使用Crystal Reports,我们使用ClickOnce部署它。
我必须做一些主要的重构,并将Log4Net引入其中一个模块,特别是那个也使用Crystal报告的模块。一如既往,我的开发机器上的所有工作都运行良好,并且在部署到没有安装Crystal的测试机器上(或者安装了Crystal时 - 只会发生不同的错误),安装在不同的点上失败 - 要么就在之前它会在尝试下载Log4Net.dll时开始下载或正确(请参阅下面的图片)。
我的问题的罪魁祸首是Crystal报告使用(由于某些疯狂的原因,我无法找到)早期版本的Log4Net.dll(1.2.10.0),我使用的版本是1.2.13.0
我尝试过的方法并没有奏效:
我已经尝试了很多东西,我已经记过了,但我会尝试概述一些主要的方法,也许有人可以看到我失败的地方:
我的项目设置:
从逻辑角度来看,我认为(也可能是错误的)在这种情况下正确的方法应该是使用程序集绑定重定向让Crystal使用最新的Log4Net.dll但是我的设置无法正常工作,而且我不确定是什么。
- 参考文献:
- 绑定重定向
这里要知道的是,1.2.13.0版本的publicKeyToken与1.2.10.0不同,这里的assemblyIdentity中列出的publicKeyToken是1.2.10.0版本的版本。
我也试过这个
- 发布设置并安装错误:
使用包含(自动)选项,安装程序似乎无法找到DLL:
使用包含(强制包含)选项,安装程序尝试下载DLL两次,或者看起来似乎是这样:
答案 0 :(得分:1)
您无法重定向到具有不同密钥的版本,并且密钥changed in 1.2.11
但是,你可以使用NuGet中的旧密钥签署一个log4net 1.2.13版本,这将有助于重定向工作。