8

我正在使用 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)怎么办

有没有办法以正确的方式解决这个问题?

4

2 回答 2

0

你把这段代码添加到App.config中:</p>

<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>
于 2014-02-27T09:36:42.013 回答
0

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

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

于 2012-12-01T22:53:19.323 回答