将 Visual Studio 2019 更新为 16.4.0 后,我无法 运行 使用目标框架 2.2 进行测试

After updated Visual Studio 2019 to 16.4.0 I can't run tests with target framework 2.2

我已将 Visual studio 2019 更新到版本 16.4.0。此版本包括 .NET Core SDK 3.1.100.

在那之后,我尝试 运行 我在使用 Target Framework 2.2 的项目中进行的一些单元测试,但无法这样做。 它给出以下错误:

Microsoft.VisualStudio.TestPlatform.ObjectModel.TestPlatformException: 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.

如果我转到上述路径,我只找到一个 3.1.0 文件夹。 如果我列出已安装的 SDKS,我会得到:

dotnet --list-sdks 
2.1.602 [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.202 [C:\Program Files\dotnet\sdk]
2.2.207 [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]

如果我要求安装运行次,我得到这个:

dotnet --list-runtimes
Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.13 [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.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.13 [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.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
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.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.13 [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.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
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]

因此,我看到 Microsoft.AspNetCore.App',版本 '2.2.0' 在列出的 运行 次中安装。

另一方面,如果我这样做:'dotnet test' 在 Package Manager Console 中的单元测试项目上,测试正在 运行。

我也安装了 Visual Studio Code,无需任何更改,我什至可以调试这些测试。

所以,我有点迷路了,例如,我尝试从 C:\Program Files\dotnet\shared\ 手动复制 2.2.0 文件夹,但在那之后,我在尝试时遇到了其他错误运行 测试。

谁能帮助我或指出正确的方向。

我会推荐给你this link

根本原因似乎是以下目录下缺少 x86 .NET Core 2.2 SDK 实例 "C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App"

我现在只有3.1版本,所以特地下载了一个x86版本的2.2 SDK安装。一旦我这样做了,testhost 运行 我的单元测试来自 Visual Studio (VS) 就好了。我从未卸载过旧版本的 SDK,所以这一定是 framework/VS.

更新过程的问题

在查看@coloradoeos 的解决方案后,我发现了一种无需安装 x86 版本即可解决此问题的不同方法。

只需转至测试 > 任何 CPU 项目的进程架构 > x64

选择 x64 后,测试应该 运行 正常。

如果您在 Azure 构建管道中遇到同样的问题。 将测试项目中的目标平台更改为X64.

Visual Studio 配置为 运行 AnyCPU 测试为 x86,但只安装了 x64 SDK。将 VS 设置为使用 x64 进行 AnyCPU 测试。 还 已升级到Microsoft.NET.Test.Sdk最新版本。

而且在我的情况下,我必须添加一个特定的 .NET 核心版本来构建管道。 查找特定的 .NET 核心版本 Here

尝试将项目框架更改为找到的框架,即 3.1 或 5.0:右键单击项目 -> 属性 -> 应用程序 -> 目标框架