最近添加log4net.dll到我们的数据对象。我们的数据对象完全建立,但是当你试图建立任何引用我们的数据对象,您会收到以下错误:如何解决“无法解决之间的冲突”错误?
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
我发现下面thread这使我能够获得有关该问题的更多信息。
log4net用于我们项目中的各种事情。例如,Crystal将1.2.9安装到GAC中。我知道infragictics使用1.2.10。
我们有一个特定的目录 - 叫做c:\references
- 我们建立了所有的dll,并且所有的应用程序都使用它来引用我们的内部dll。因此,我特别将我的数据对象中的引用设置为版本1.2.11的c:\ references \ log4net.dll。这很奇怪,因为在上面的错误消息中你没有看到1.2.11。该DLL被引用特定版本:=真&复制本地:=真。我检查了构建目录& 1.2.11的log4net确实移动正确。
如果它帮助这里有一些详细的错误信息:
There was a conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905".
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
References which depend on "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" [C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll].
C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Shared\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Shared.dll
References which depend on "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" [C:\Program Files (x86)\Business Objects\Common\4.0\managed\log4net.dll]. c:\references\DBObjectAdoNet.dll
Project file item includes which caused reference "c:\references\DBObjectAdoNet.dll".
更新:到目前为止,我发现修复错误的唯一方法是在任何引用DBObjectAdoNet.dll参考log4net的。这对我们来说不是一个真正可用的解决方案,因为我们整个系统中的几乎所有内容都使用它。
第二次更新:试图将log4net放入GAC认为可以解决问题但仍然无法解决的问题。
第3次更新:我已经致电微软。他们希望我使用Assembly.LoadFrom(),因为我们在一个应用程序中创建了超过300,000个调用,并且需要为每个调用进行反射,这会让事情减慢很多,所以我非常非常犹豫。
我发现如果我卸载我的机器上的晶体运行时错误消失了,这并没有什么意义,因为它唯一能做的就是从目录中删除log4net 1.2.10.0 GAC在.NET framework 2.0文件夹下,这应该不重要,因为该应用程序是.NET Framework 4应用程序。
'报价'我发现如果我卸载我的机器上的晶体运行时'/ quote' - 问题:**晶体运行时**?什么**晶体运行时**? – 2012-07-05 13:32:47
@Robert Crystal 11 x86 for .Net Framework 4.我认为当我遇到问题时,x64版本也会发生同样的情况。 – coding4fun 2012-09-28 15:58:28
我在无法解决冲突的项目中添加了我想要的log4net版本的引用,并解决了此问题。 – 2016-01-22 14:41:39