2010-04-13 215 views
9

我有一個log4net的問題,它一直在困擾着我,我已經解決了它的問題。log4net依賴關係問題

我有一個引用log4net的類庫。如果我在另一個項目中引用這個類庫我必須然後引用log4net的在這個項目中,否則我得到一個生成錯誤

Unknown build error, 'Cannot resolve dependency to assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.' 

我知道,錯誤消息可能是告訴我的解決方案,可惜我沒有說話胡言亂語......

乾杯傢伙

亞歷克斯..

回答

7

這裏是一個描述發生了什麼,以及如何解決它的鏈接:

http://blogs.msdn.com/jmstall/archive/2006/11/22/reflection-type-load-exception.aspx

從上面的鏈接的摘錄:

那麼實際情況是,它試圖 得到酒吧的System.Type,但 解決它需要加載 鹼的類型類,這是在另一個DLL。 Reflection-Only上下文不會執行 綁定策略,因此它找不到那個 dll。 LoaderException提示 使用ReflectionOnlyAssemblyResolve, ,它提供了有關 this的更多信息。

要使用反射API,必須解決所有使用的依賴關係。

+0

不,因爲在將類庫添加到空白項目之前發生此錯誤,甚至沒有對類庫進行任何調用。 – 2010-04-13 14:41:25

+0

@Alex DeLarge我已經鏈接到一個MSDN文章,解釋發生了什麼。 – kemiller2002 2010-04-13 15:29:02

+1

感謝那個凱文,我會接受這個答案,但更多的是尋找如何用log4net來解決這個問題。 – 2010-04-15 11:59:28

1

我有同樣的問題。我仍然不完全瞭解它,但我可以告訴你我是如何解決我的問題的。 我有一個單元測試項目B,項目A引用了log4net的項目引用。所以對我來說,當Visual Studio嘗試爲單元測試項目創建.accessor文件時,它會反映到項目A上,這意味着它會嘗試加載項目A的引用,但是程序集加載程序無法找到它,因爲我在GAC中沒有log4net,僅在本地供項目A參考。在我的情況下,將log4net添加到我的DEVPATH(GAC也可以)也是解決方案。

4

當創建新的WPF項目並添加對引用log4net的另一個項目的引用時,我有與log4net相同的問題。我通過使用以下指令將log4net.dll添加到GAC中解決了此問題:http://msdn.microsoft.com/en-us/library/dkkx7f79.aspx

+1

是的,這將工作,但不幸的是,向GAC添加程序集並不總是可能的。 – 2013-01-04 20:48:24

+0

我有與log4net和WPF項目完全相同的問題。 Log4Net在一個單獨的項目中引用,這是一個類庫,然後我想在我的WPF項目中引用它。我使用包管理器控制檯在WPF項目中安裝log4net(安裝包log4net -project My.Wpf.Project),並解決了問題。 – 2016-08-15 08:26:00