引用不同版本的log4net
本文关键字:log4net 版本 引用 | 更新日期: 2023-09-27 18:07:26
我们正在构建一个基于log4net的简单日志库。该项目有一些用于捕获未处理异常等的通用模块。
问题是我们想要将这个库部署到其他web解决方案,比如umbraco和EPiServer,它们都已经使用log4net,并且使用不同的版本。如果我们从日志库部署log4net程序集,那么umbraco和EPiServer都会报错版本不匹配。
解决这个问题的最佳方法是什么?我在这里读了这个方法http://www.claassen.net/geek/blog/2011/08/using-log4net-without-requiring-it-as-a-dependency.html但不确定这是否是一个标准化的方法?
提前感谢艾尔。
实际上只有两种方法。一种方法是在一个完全不同的AppDomain中加载代码,并且不依赖于umbraco或EPiServer。然后,您可以自由地加载您想要的任何版本的log4net,因为它将是唯一加载的版本。这给您留下了依赖于umbraco或EPiServer的AppDomain与之间通信的问题。这不是微不足道的。看看像Microsoft插件框架(MAF)这样的东西,你就会知道为什么它很复杂,以及如何做到这一点。
另一个选项是使用类似ilmerge的东西将log4net程序集与您的程序集合并。这样,无论何时您的代码引用log4net,它都有效地引用了它的私有版本。还有其他第三方工具,如SmartAssembly,在合并程序集时更加可靠。我认为ilmerge已经有一段时间没有工作了,而且还没有得到真正的支持。