我正在尝试在 Prism 应用程序中添加 log4net 支持。不幸的是,每个棱镜模块都出现以下错误:
错误 101 未知的构建错误,“无法解析对程序集 'log4net,版本 = 1.2.10.0,文化 = 中性,PublicKeyToken = 1b44e1d426115821'的依赖关系”,因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。[棱镜模块 1 项目名称]
错误 101 未知的构建错误,“无法解析对程序集 'log4net,版本 = 1.2.10.0,文化 = 中性,PublicKeyToken = 1b44e1d426115821'的依赖关系”,因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。[棱镜模块 2 项目名称]
等等...
我将记录器设置如下:
- 我添加了对主应用程序和引导程序的 log4net 程序集引用。
- 我将 log4net 配置添加到 app.config 文件中。
- 我将 [assembly: log4net.Config.XmlConfigurator(Watch = true)] 添加到 App.xaml.cs 文件中。
- 我创建了一个实现 ILoggerFacade 的记录器,并在 Bootstrapper 中覆盖了 CreateLogger() 以使其返回我的自定义记录器。
而已。如果我尝试构建,它会因每个 prism 模块项目的上述错误而失败。我发现的唯一解决方法是手动将 log4net 引用添加到每个 prism 模块项目中,我认为这有点破坏了 ILoggerFacade 和实际实现的依赖关系之间的抽象。
该错误建议使用 ReflectionOnlyAssemblyResolve 事件,但我看不出它在这里有什么帮助,因为它是构建错误,而不是运行时。
有什么建议吗?:-)