2014-06-06 54 views
2

當試圖運行由供應商爲試用提供一個MVC樣品一個API,我得到以下錯誤:錯誤與log4net的:「無法加載文件或程序集‘log4net的,版本= 1.2.10.0文化=中性公鑰=空’或它的一個依賴」

[StructureMapConfigurationException: StructureMap configuration failures: Error: 170 Source: Registry: StructureMap.Configuration.DSL.Registry, StructureMap, Version=2.6.3.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223 Unable to find the exported Type's in assembly Groupdocs.Web.UI.Comparison, Version=2.0.5205.21794, Culture=neutral, PublicKeyToken=c9073b8a6a9c78c8. One or more of the assembly's dependencies may be missing.

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044) System.IO.FileLoadException: Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044) File name: 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes) at System.Reflection.RuntimeAssembly.GetExportedTypes() at StructureMap.Graph.TypePool.<>c__DisplayClass2.<.ctor>b__0(Assembly assembly)

專門似乎與log4net的做,但我得到了這個項目和版本(1.2.10)正確的引用,有趣的是,當我嘗試在同一個項目從另一臺機器它的工作原理並不確定實際問題是什麼。 我檢查了GAC,沒有log4net參考。

回答

3

錯誤說:「一個強命名的組件需要

我覺得你應該或者是強命名鍵添加到log4net的您使用,或者刪除一個強命名關鍵的應用。

+0

奇。 log4net 1.2.10 **的默認分配是** [用強名稱密鑰簽名](http://logging.apache.org/log4net/release/faq.html#two-snks)。 – stuartd

+0

我已經嘗試將其添加到GAC並且沒有任何效果。 – Rubans

2

必須有沿着這是引用log4net的舊版本的行某處的DLL。你無法想象我們多久會在我們的項目中遇到類似的問題。該解決方案僅僅是找到所有依賴於log4net的項目並升級它們的版本。最新版本的log4net是1.2.13。在你的應用程序的某個地方必須有一個DLL,它仍然依賴於你的1.2.10版本的舊版本。 更新包-Id log4net的

原始然而,方便的解決方案:

1 - 構建完整的解決方案,確保項目順利編譯和構建。

2 - 搜索解決方案文件夾(在Visual Studio中右擊解決方案,「在資源管理器中打開文件夾」)爲log4net.dll

3的所有實例 - 在你的情況很可能是你會在您的項目bin文件夾中看到相同DLL的不同版本。比較這些DLL將導致您的DLL與解決方案的其餘部分不同。

+0

我得到同樣的錯誤如上,但我的項目都沒有使用log4net。那麼,我如何找出哪些第三方庫引用了log4net? – Pawan

+0

@pawan:我更新了我的答案以供參考。 – MHOOS

1

在你配置你沒有指定的公鑰標記,請檢查您的配置包含:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, 
          Version=1.2.10.0, Culture=neutral, PublicKeyToken=1B44E1D426115821"/> 

這將通過其強大的名字載入log4net的集會。

相關問題