C# 将NLog与MSTest(.NET Core 2.0)一起使用

C# 将NLog与MSTest(.NET Core 2.0)一起使用,c#,.net-core,mstest,nlog,C#,.net Core,Mstest,Nlog,我有一个使用.NET4.7构建的解决方案。此解决方案有两个项目: 类库(.NET 4.7.2) 单元测试项目(.NET Framework) 我正在尝试将此解决方案迁移到使用.NET Standard | Core 我已成功地将类库转移到.NET标准2.0项目中。我还将单元测试项目转移到了一个应用程序中。万事俱备。我可以按预期运行测试。但是,没有通过NLog写入日志 在我的.NET4.7版本的解决方案中,当我运行单元测试时,一个实际的日志文件是通过NLog编写的。但是,在新的.NET标准|核

我有一个使用.NET4.7构建的解决方案。此解决方案有两个项目:

  • 类库(.NET 4.7.2)
  • 单元测试项目(.NET Framework)
我正在尝试将此解决方案迁移到使用.NET Standard | Core

我已成功地将类库转移到.NET标准2.0项目中。我还将单元测试项目转移到了一个应用程序中。万事俱备。我可以按预期运行测试。但是,没有通过NLog写入日志

在我的.NET4.7版本的解决方案中,当我运行单元测试时,一个实际的日志文件是通过NLog编写的。但是,在新的.NET标准|核心实现中,没有写入此日志文件。我的mstest项目中有以下两个文件:

App.config


nlog.config


在我的mstest项目中,我还添加了对以下内容的引用:

  • Microsoft.Extensions.DependencyInjection
  • NLog
  • NLog.Extensions.Logging

我遵循概述的步骤。除了第二步之外,我什么也没做。mstest项目需要这些东西吗?如果是,在哪里?对于已经开始工作的东西来说,似乎还有很多额外的东西。

在运行单元测试时,很难找到nlog.config,因为实现会将DLL(大多数情况下不是nlog.config)移动到临时文件夹中

建议在单元测试项目中从代码配置NLog。()

另一个选项是手动加载NLog配置文件。您需要向
XmlLoggingConfiguration
构造函数提供nlog.config的路径:

LogManager.Configuration = new XmlLoggingConfiguration(pathToNLogConfig);
离题但相关:

在单元测试中,建议不要将事件日志写入文件,而是写入内存,例如。它使单元测试更加健壮