【问题标题】:Crystal Reports: Is it a good idea to compile my project using the Crystal Reports' log4net.dll version?Crystal Reports:使用 Crystal Reports 的 log4net.dll 版本编译我的项目是个好主意吗?
【发布时间】:2012-05-29 09:59:06
【问题描述】:

我正在使用 Apache 的 log4net 版本来记录东西

1.2.10.0 (with PublicTokenKey=1b44e1d426115821)

但不幸的是,SAP Crystal Reports 使用它自己版本的这个库和另一个公共令牌密钥(用他们自己的 snk 文件编译):

1.2.10.0 (with PublicTokenKey=692fbea5521e1304)

相同的版本,不同的公共令牌密钥。当我编译我的解决方案时,我有一条消息告诉我以下内容:

“无法解决“log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821”和“log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”之间的冲突。选择"log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" 任意。”

最糟糕的是,如果不安装 32 位版本的 Crystal Reports(在 GAC 上安装 log4net 程序集),我无法部署到 64 位机器

我从 GAC 获取了 Crystal 版本的 log4net,问题是:

如果我开始使用 Crystal Reports 版本 (PublicTokenKey=692fbea5521e1304),我会解决什么问题吗?

如果我想使用下一个版本的 log4net(比如 v1.2.11.0)怎么办?

有什么方法可以正确解决这个问题吗?

【问题讨论】:

  • 疯狂的是,.net 随意选择标准版本的 log4net,所以 Crystal 自己编译(和签名)的那个甚至没有被使用......所以 Crystal,为什么不只需在您的应用中使用/引用官方签名的,而不是看看到底发生了什么?

标签: wpf crystal-reports


【解决方案1】:

好吧,既然 log4net 是开源的,你可以用不同的名字编译它。

我不完全确定这是否可行,但我怀疑您也可以查看aliases。另见here

【讨论】:

  • 嗨罗德里戈,你有没有想出如何摆脱这个“警告”?如果是这样,您可以在这里发布您的答案吗?干杯,托德。
  • 嗨@Tod,我担心它没有用。但我没有尝试任何新的东西。
【解决方案2】:

你把这段代码添加到App.config中:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="14.0.2000.0" newVersion="12.0.2000.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="14.0.2000.0" newVersion="12.0.2000.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.ReportSource" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="14.0.2000.0" newVersion="12.0.2000.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.Windows.Forms" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="14.0.2000.0" newVersion="12.0.2000.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.Enterprise.Framework" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="14.0.2000.0" newVersion="12.0.1100.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.Enterprise.InfoStore" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="14.0.2000.0" newVersion="12.0.1100.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>

【讨论】:

  • 这究竟应该做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2012-04-26
  • 1970-01-01
相关资源
最近更新 更多