我们有使用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
时不会抛出异常。
当项目完成创建时,我收到通常的错误消息:
类型或命名空间名称' log4net'找不到(你错过了使用指令或汇编引用吗?)
如果我手动添加它一切都很好,但需要生成它。
目标的.Net框架是4.6,但log4net版本是1.2.13.0。但是,在其他解决方案中,这似乎不是问题。
为什么它会从references
对象中删除log4net引用?
答案 0 :(得分:0)
代码中实际上有两个地方可以创建引用。上面的情况是第一种情况(并且有一些执行路径是唯一的情况),但是另一个地方也存在没有添加log4net引用,这就是它在最终方案中似乎被丢弃的方式。 所以我在两个地方添加了log4net参考,现在工作正常。