log4net和解决方案中的多个启动项目

时间:2015-04-23 18:23:41

标签: c# visual-studio-2010 log4net

我们在解决方案中有很多项目,还有很多项目作为某些类库项目的测试项目。 Project Vis和Project Test既可以作为启动项目,也可以作为Project Vis中的单独流程启动。他们都专注于类库Project Calc。 所以,如果我用Project Test测试Project Calc,那么log4net工作正常。但是,如果我使用Project Vis(仍然是VS2010中的Visual Studio插件)作为启动,然后启动Project Test来测试Project Calc,我遇到了问题。

  

无法加载文件或程序集'log4net,Version = 1.2.13.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或其中一个依赖项。系统找不到指定的文件。

这是从Project Calc中的类的构造函数抛出的。

使用在项目计算值代码略微不同的内部结构中,我们使用的CodeDOM建立一些C#文件并将其编译成一个单独的DLL,它项目C使用(看aevitas答案here),我收到了:

  

System.TypeInitializationException未处理   消息:'Test'的类型初始值设定项引发了异常。

我认为这也与log4net实现有关。

我在所有项目中都有外部log4net配置文件的链接,每个项目中都有以下一行:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4NetSettingsGlobal.xml", Watch = true)]

以及每个类中的以下一行,我从那里调用日志方法:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

问题可能是因为Project Vis已经配置了log4net然后启动Project T? 我怎么能解决这个问题,以便我可以适应这两种情况呢? (也就是说,Project T也可以单独执行来测试Project Calc。)

1 个答案:

答案 0 :(得分:0)

您的log4net dll似乎未复制到您的bin目录。检查dll是否存在,如果没有配置项目将其复制到bin目录。您可以通过在作为插件运行时手动将log4net dll复制到bin目录中来轻松测试。