2010-04-13 169 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