即使我的项目以dotnet core 2.2为目标,为什么Visual Studio 2019仍在dotnet core 1.0中运行测试?

时间:2019-05-29 05:47:37

标签: c# .net-core visual-studio-2019 vstest

我有2个项目的解决方案,其中一个是测试项目。这两个项目都针对dotnet core 2.2:

<TargetFramework>netcoreapp2.2</TargetFramework>

我正在使用Visual Studio 2019(版本16.1.1)。当我在测试浏览器中单击“全部运行”时,它将在输出窗口中输出以下警告:

[5/28/2019 10:25:40 PM Informational] ------ Run test started ------
[5/28/2019 10:25:40 PM Warning] Test run will use DLL(s) built for framework .NETCoreApp,Version=v1.0 and platform X64. Following DLL(s) do not match framework/platform settings.
MyApp.UnitTests.dll is built for Framework 2.2 and Platform AnyCPU.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.

[5/28/2019 10:25:41 PM Informational] ========== Run test finished: 3 run (0:00:01.167997) ==========

测试会运行,并成功完成。但是我想知道如何摆脱这个警告。

我添加了具有以下设置的.runsettings文件,但仍然看到相同的警告。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetFrameworkVersion>FrameworkCore10</TargetFrameworkVersion>
  </RunConfiguration>
</RunSettings>

将FrameworkCore10更改为FrameworkCore22(或netcoreapp2.2)会引发巨大的异常。例外情况的前几行:

[5/28/2019 10:41:30 PM Error] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.VisualStudio.TestWindow.Controller.RequestConfiguration.GroupTestContainersConfigByFrameworkAndArchitecture(IEnumerable`1 testContainersConfig, IXPathNavigable runSetting)
   at Microsoft.VisualStudio.TestWindow.Controller.TestRunConfiguration.<GetAllCriteriaQueues>d__64.MoveNext()
   at Microsoft.VisualStudio.TestWindow.Controller.TestRunRequest.<CreateRequests>d__23.MoveNext()
   at Microsoft.VisualStudio.TestWindow.Controller.Request.<RunRequests>d__95.MoveNext()
   --- End of inner exception stack trace ---

请注意,相同的项目在Visual Studio 2017中可以正常运行,不需要任何运行设置文件。

3 个答案:

答案 0 :(得分:4)

这不是答案,而是发布信息以帮助其他人登陆。

Visual Studio团队已确认该问题,正在寻求解决。最好在这里遵循它:

答案 1 :(得分:2)

从netframework项目升级到netcore后出现了问题。

使用VS Enterprise 16.3.8,清理解决方案以及删除所有临时文件夹(例如binobj)有助于我以所需的netcore版本运行测试。

修改:
附带说明,在更改目标框架时,VS有时会出现问题。更改后,删除bin / obj有时可能是您最后的转义。

答案 2 :(得分:-1)

那台机器上可能没有安装2.2点网框架。

这里是Link,您可以下载框架。