从使用 CodeDom 创建的项目中删除的 log4net 引用

log4net reference dropped from project created with CodeDom

我们有使用 CodeDom 编译到库中的代码。在其中一些 类 我想添加 log4net 语句。

添加对将使用 CodeDom 创建的项目的引用时,我们有:

            references.Add("mscorlib.dll");
            references.Add("System.dll");
            references.Add("System.Data.dll");
            references.Add("System.Xml.dll");
            references.Add("System.Core.dll");
            references.Add("System.Data.DataSetExtensions.dll");
            references.Add("System.Data.Linq.dll");
            references.Add(Path.Combine(m_Settings.BinPath, "log4net.dll"));
            references.Add(Path.Combine(m_Settings.Engine.EngineBinPath, "Engines.Calculation.dll"));

当我调试时,references 包含一个 log4net 条目,但在生成的项目中,它丢失了。 log4net.dll在m_Settings.BinPath中,添加到references中不抛异常。

项目创建完成后,我收到常见的错误消息:

The type or namespace name 'log4net' could not be found (are you missing a using directive or an assembly reference?)

如果我手动添加就没问题,但是需要自己生成

目标.Net 框架是4.6,但log4net 版本是1.2.13.0。但是,这似乎不是解决方案其余部分的问题。

为什么它会从 references 对象中删除 log4net 引用?

代码中实际上有两个地方创建了引用。上面的案例是第一个场景(并且有一些执行路径是唯一的场景),但另一个地方也存在,它没有添加 log4net 引用,这就是它在最终方案中似乎被删除的方式。 所以我在两个地方都添加了 log4net 参考,现在它工作正常。