Fer*_*ran 14 .net c# log4net visual-studio
我有一个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.'
Run Code Online (Sandbox Code Playgroud)
我知道错误信息可能告诉我解决方案,不幸的是我不会说胡言乱语......
干杯伙计们
亚历克斯..
kem*_*002 10
以下是描述正在发生的事情以及如何解决问题的链接:
http://blogs.msdn.com/jmstall/archive/2006/11/22/reflection-type-load-exception.aspx
以上链接的摘录:
所以发生的事情是它试图获取Bar的System.Type,但要解析它需要加载基类的类型,这是另一个dll.Reflection-Only上下文不执行绑定策略,因此无法找到该dll.LoaderException提示使用ReflectionOnlyAssemblyResolve,它提供了有关此内容的更多信息.
要使用反射API,您必须解决所有使用的依赖项.
小智 5
我知道已经有一段时间了,但我想分享为我解决问题的方法。
看起来这个问题的主要原因是 log4net 在类库的程序集信息中需要它的配置文件。WPF 似乎不喜欢这样。在 wpf 应用程序本身中引用 log4net 会导致 log4net 配置文件被覆盖,因为 wpf 应用程序位于构建顺序的后面,并生成默认的 log4net 配置文件。
因此,要修复您的类库以与程序集预加载一起使用,请按如下方式编辑它:
在类库中删除 AssemblyInfo.cs 中的这一行:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
Run Code Online (Sandbox Code Playgroud)
现在,在库的入口点设置记录器,如下所示:
FileInfo configFileInfo = new FileInfo("log4net.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(configFileInfo);
Run Code Online (Sandbox Code Playgroud)
如果您在 app.config 文件中设置 log4net,则只需引用该文件即可。
我在这里找到了这个解决方案。
| 归档时间: |
|
| 查看次数: |
11497 次 |
| 最近记录: |