最近添加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