ClickOnce / Assembly绑定重定向不适用于Log4Net.DLL

时间:2014-07-31 14:47:42

标签: .net crystal-reports log4net clickonce .net-assembly

我现在第二天一直在这,我几乎放弃了。我已经阅读了许多与不同库有关的线程,这些库依赖于不同的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 Reports for .NET
  • 将两个版本的Log4Net.dll添加到项目中(项目中的不同文件夹),并使用此帖子中的自定义程序集:在同一文件夹中使用同一程序集的不同版本
  • 程序集绑定重定向(最新)

我的项目设置:

从逻辑角度来看,我认为(也可能是错误的)在这种情况下正确的方法应该是使用程序集绑定重定向让Crystal使用最新的Log4Net.dll但是我的设置无法正常工作,而且我不确定是什么。

- 参考文献:

enter image description here

enter image description here

enter image description here

- 绑定重定向

This is the current setting

这里要知道的是,1.2.13.0版本的publicKeyToken与1.2.10.0不同,这里的assemblyIdentity中列出的publicKeyToken是1.2.10.0版本的版本。

我也试过这个 enter image description here

- 发布设置并安装错误:

使用包含(自动)选项,安装程序似乎无法找到DLL: enter image description here

enter image description here

使用包含(强制包含)选项,安装程序尝试下载DLL两次,或者看起来似乎是这样:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您无法重定向到具有不同密钥的版本,并且密钥changed in 1.2.11

但是,你可以使用NuGet中的旧密钥签署一个log4net 1.2.13版本,这将有助于重定向工作。