Visual Studio 无法运行 .NET Core 测试

Pur*_*ome 10 c# testing visual-studio asp.net-core

使用最新版本的 Visual Studio,我无法在测试资源管理器中运行任何测试。Tests输出窗口中的错误消息是:

Testhost process exited with error: It was not possible to find any compatible framework version
The framework 'Microsoft.AspNetCore.App', version '2.2.0' was not found.
  - The following frameworks were found:
      3.1.0 at [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=2.2.0&arch=x86&rid=win10-x86
. Please check the diagnostic logs for more information.
[17/12/2019 5:46:13.908 PM] ========== Run aborted: 0 tests run (0:00:00.2418036) ==========
Run Code Online (Sandbox Code Playgroud)

所以建议我需要安装 .net core 2.2 但它找不到它。它只能找到3.1。

让我们确认一下......

C:\Users\justi>dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.100\

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  2.1.604 [C:\Program Files\dotnet\sdk]
  2.1.700 [C:\Program Files\dotnet\sdk]
  2.1.701 [C:\Program Files\dotnet\sdk]
  2.1.801 [C:\Program Files\dotnet\sdk]
  2.1.802 [C:\Program Files\dotnet\sdk]
  2.2.100 [C:\Program Files\dotnet\sdk]
  2.2.200 [C:\Program Files\dotnet\sdk]
  2.2.201 [C:\Program Files\dotnet\sdk]
  2.2.202 [C:\Program Files\dotnet\sdk]
  2.2.204 [C:\Program Files\dotnet\sdk]
  2.2.206 [C:\Program Files\dotnet\sdk]
  2.2.300 [C:\Program Files\dotnet\sdk]
  2.2.301 [C:\Program Files\dotnet\sdk]
  2.2.401 [C:\Program Files\dotnet\sdk]
  2.2.402 [C:\Program Files\dotnet\sdk]
  3.1.100 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  <snip snip>
  Microsoft.AspNetCore.All 2.1.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  <snip snip>
  Microsoft.AspNetCore.App 2.1.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  <snip snip>
  Microsoft.AspNetCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  <snip snip>
  Microsoft.NETCore.App 2.1.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  <snip snip>
  Microsoft.NETCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Run Code Online (Sandbox Code Playgroud)

所以感觉就像我安装了 2.2.0,因为它列在安装的许多版本列表中。

编辑

注意这一点(强调我的):

  • 找到以下框架: 3.1.0 at [C:\Program Files (x86) \dotnet\shared\Microsoft.AspNetCore.App]

看起来它已经安装了 3.1.0 到 ..x86而其余的 sdk 安装在Program Files(x64 位版本)下。

为什么会这样说?

编辑2:

  • 单位
  • xUnit VS runner nuget 也已“安装”。
  • 视觉工作室 16.4.1

Sai*_*aif 13

从 CPU x86 更改为 x64 … 测试 > 任何 CPU 项目的进程架构 > x64

在此处输入图片说明

  • 是的 - 这让我的测试再次开始工作..但我首先试图弄清楚这一切是如何开始的以及为什么开始的。 (3认同)

Tse*_*eng 6

当您升级测试项目但未升级测试 SDK 时,有时会发生这种情况。如果您升级 Visual Studio 但没有引用最新的测试 sdks,也会发生这种情况。

在您的测试项目的.csproj文件中,您应该找到类似以下内容的内容

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
Run Code Online (Sandbox Code Playgroud)

在您的testproject.csproj.

这些通常与 Visual Studio 版本同步,因此最新的 Visual Studio 是 16.4。尝试升级该引用以匹配您的 Visual Studio 版本,即

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
Run Code Online (Sandbox Code Playgroud)

对于最新的稳定版本或

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0-preview-20191115-01" />
Run Code Online (Sandbox Code Playgroud)

为最新预览。

此错误的另一个来源可能是,您的项目是 .NET Core 3.x 项目,但您的单元测试项目仍然是 .NET Core 2.2。确保它们都使用相同版本的 .NET Core

<PropertyGroup>
  <TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)


Jer*_*own 5

我也有这个问题。测试输出中显示的错误。

在此输入图像描述

错误消息片段:

测试数据存储在 0.153 秒内打开。---------- 为请求的测试运行启动测试发现 ---------- Microsoft.VisualStudio.TestPlatform.ObjectModel.TestPlatformException:测试主机进程退出并出现错误:无法找到任何兼容框架版本 找不到框架“Microsoft.NETCore.App”版本“2.1.0”。

  • 找到以下框架: 3.1.9 位于 [C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App] 您可以通过安装指定的框架和/或 SDK 来解决该问题。指定的框架可以在以下位置找到:
  • https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=2.1.0&arch=x86&rid=win81-x86 。请检查诊断日志以获取更多信息。在 Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.ProxyOperationManager.ThrowOnTestHostExited(布尔 testHostExited) 在 Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.ProxyOperationManager.SetupChannel(IEnumerable`1 源,字符串 runSettings) 在 Microsoft.VisualStudio.TestPlatform.CrossPlatEngine。 Client.ProxyDiscoveryManager.DiscoverTests(DiscoveryCriteria discoveryCriteria, ITestDiscoveryEventsHandler2 eventHandler) ========== 测试发现中止:1.4 秒内找到 0 个测试 ========== 执行文件中的所有测试:ConfigurationTests。 cs ---------- 开始测试运行 ---------- ========== 测试运行完成:0 次测试在 123.4 毫秒内运行(0 次通过,0 次失败) , 0 跳过) ==========

安装 .NET Core SDK 3.1.x 后出现此问题。此更改必须对 Visual Studio 测试设置进行一些更改。

(x86) 上的安装:

在此输入图像描述

(x64) 上的安装:

在此输入图像描述

我修复了它,没有对解决方案或项目文件进行任何更改。在我的测试资源管理器中,我选择了 AnyCPU 项目的处理器架构。我把它从 x86 改为 x64。

在此输入图像描述

注意:我所有的 .NET Core 安装都是 x64。然而,出于某种原因,x86 中仅存在 3.1.x。我的测试项目的目标框架是 .NET Core 2.1,因此要运行测试,需要查看 x64 文件夹路径。

从“添加或删除程序”中查看安装情况:

在此输入图像描述


Tem*_*Tre 0

有时,Visual Studio 中的测试问题可以通过更改为 x64 架构来解决。你能尝试一下吗?测试 -> 测试设置 -> 默认处理器架构。

还有一点是,默认加载不正确的DLL。所以,视觉工作室是由我遇到这样的事情生成的:

<Choose>
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
  <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
  </ItemGroup>
</When>
<Otherwise>
  <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
</Otherwise>
</Choose>
Run Code Online (Sandbox Code Playgroud)

所以,问题出在“否则”上。我将其替换为:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
Run Code Online (Sandbox Code Playgroud)

并且一切正常。也许在你的项目中有这样的东西。