【发布时间】:2012-10-30 12:08:42
【问题描述】:
我正在使用 NuGet 管理 C# 项目的构建以获取 Common.Logging.Log4Net。从 Visual Studio 2010 运行时,单元测试全部通过,没有错误,但是当我使用 MSTest 从命令行运行时(因此当 TeamCity 执行相同操作时),当单元测试组织一个执行此操作的类时,我会失败:
private static readonly ILog Log = LogManager.GetCurrentClassLogger();
错误是:
测试方法 MyProject.Tests.Unit.BusinessDateBuilderTest.CreateElementalTest 抛出 异常:System.TypeInitializationException:类型初始化程序 对于 'MyProject.Common.Library' 抛出异常。 ---> System.TypeInitializationException:类型初始化程序 对于 'MyProject.Common.Initialization.Impl.InitializationLoaderImpl' 抛出了一个 例外。 ---> Common.Logging.ConfigurationException: 获取配置失败 用于配置部分“common/logging”中的 Common.Logging。 ---> System.Configuration.ConfigurationErrorsException:创建时出错 公共/日志记录的配置部分处理程序:无法创建 输入“Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net” (C:\Subversion\Project\MyProject.Tests.Unit\bin\Debug\TestResults\rac_DWM300619 2012-10- 30 11_58_34\Out\MyProject.Tests.Unit.dll.config 第 168 行)---> Common.Logging.ConfigurationException:无法创建 输入“Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net”---> System.IO.FileNotFoundException:无法加载文件或 程序集“Common.Logging.Log4net”或其依赖项之一。系统找不到 指定的文件。
我正在使用以下 NuGet 依赖项:
Common.Logging.2.1.1(DLL 版本为 2.1.1.0) Common.Logging.Log4Net.2.0.1(DLL版本为2.0.0.0) log4net.1.2.10(DLL版本为1.2.10)
我注意到 Common.Logging.Log4net.dll 没有复制到 testresults 输出文件夹 - 这是问题吗?如果是这样,我该如何解决?
【问题讨论】:
-
确保将
Common.Logging.Log4net程序集复制到运行测试的目录中。 -
是的,但是怎么做?复制了 Common.Logging.dll,但没有复制 Common.Logging.Log4net.dll。
-
在您的应用程序中添加对程序集的引用。
标签: c# visual-studio-2010 log4net mstest nuget