我很新,所以我很抱歉,如果我的問題沒有很好的結構或只是在錯誤的地方,等我已經很好的尋找解決方案,並嘗試了一些不同的方法,但沒有' t發現任何有效的東西....如何阻止Nhibernate log4net與現有log4net衝突?
我有一個解決方案,使用Nhibernate,因此必須使用log4net/2.0 /文件夾中的log4net V1.2.10.0。然而,我的解決方案也鏈接到其他一些解決方案,對此,我的訪問權限非常有限。這些使用相同的log4net V.1.2.10.0,但在文件夾中:log4net/1.2/
當我運行我的解決方案時,我得到此錯誤。
{"Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=e27b8fa57f63a98d' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)":"log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=e27b8fa57f63a98d"}
我試圖修改它調用的解決方案,但是每次我修改一個我儘快,因爲它試圖用另一種解決方案獲取解決方案中的錯誤,所以我必須修改另一個等等上。有太多的解決方案需要修改,而且與其他解決方案的相互依賴太多,我完全無法控制我能夠全部更改它們,以便使用log4net/2.0。
我發現了另一個問題(Referencing 2 different versions of log4net in the same solution),我認爲這個問題基本上是同一個問題,他們用綁定修改了app.config,但我似乎無法得到這個權利,因爲我仍然得到同樣的錯誤。我已經包括在我的app.config的結合是這樣的:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="e27b8fa57f63a98d" />
<codeBase version="1.2.10.0" href="2.0\log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821"/>
<codeBase version="1.2.10.0" href="1.2\log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
我不知道答案的另一個問題是指當它說:「你爲每個版本在項目中創建一個文件夾2 log4net。通過將文件添加到解決方案中(而不是添加引用),將每個log4net.dll放在相應的文件夾中。可以將複製設置爲輸出目錄屬性以便始終複製,以便在複製時自動將其複製到輸出文件夾你建立。「我是否需要爲解決方案引用的每個解決方案執行此操作?
理想情況下,我希望能夠對我的解決方案進行修改,僅僅意味着它不關心什麼log4net解決方案正在使用,但它們仍然可以在彼此之間傳遞日誌消息。我認爲這是可能的,所以任何幫助將非常感激。無論是那種方式或如何關閉nHibernate的記錄器,以便它不關心我使用的是什麼log4net,所以我可以繼續使用所有其他解決方案正在使用的log4net/1.2。我嘗試了各種各樣的方法來關閉它,但它似乎最終還是試圖找到log4net/2.0。
對不起,剛纔意識到我沒有包括這部分。當我使用上面的綁定時,只要嘗試運行解決方案,就會收到此錯誤。 '{「無法加載文件或程序集'log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821'或其某個依賴項。 )「:」log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821「}'如果我不使用綁定,它會運行,直到它試圖引用另一個解決方案,然後我會得到頂部的錯誤。 – 2012-02-16 11:54:36
您正在使用哪個版本的NHibernate?從3.0.0開始,NHibernate不再需要特定版本的log4net。 – cremor 2012-02-16 12:32:07
別擔心,從OSS項目開始時遇到「DLL地獄」版本問題並不罕見,但值得堅持下去 – 2012-02-16 13:25:07