更新了Visual Studio 2019到16.4.0版本后,我无法使用目标框架2.2运行测试。

37

我已将Visual Studio 2019更新至16.4.0版本,该版本包括.NET Core SDK 3.1.100。

此后,我尝试运行一些使用目标框架为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',列出了可运行的时刻。

另一方面,如果我在 Package Manager Console 内对单元测试项目执行 'dotnet test',则会运行测试。

我还安装了 Visual Studio Code,不需要任何更改,甚至可以调试这些测试。

因此,我有点迷失方向,尝试手动复制 C:\Program Files\dotnet\shared\ 下的 2.2.0 文件夹,但之后在尝试运行测试时出现其他错误。

是否有人可以帮助或指导我正确方向。


2
我曾经遇到过一个非常相似的错误,后来我通过在测试项目的包引用中删除对Microsoft.NET.Test.Sdk.dll的引用来解决了它。但我相信更改运行/调试测试的64位架构选项也可以解决该问题。 - Dylan Nicholson
4个回答

93

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

只需转到“测试(Test)” > “任意 CPU 项目(Archtecture for anyCPU projects)” > “x64”

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

输入图片说明


4
我已经尝试了你的解决方案,它运行得很好。此外,无需下载和安装任何额外的内容,只需要将CPU更改为X64即可。 我仍然想知道的唯一问题是,在Visual Studio更新之后为什么停止工作了,发生了什么,我猜测配置被不知不觉地改变了。 - Sebastian Inones
太好了!谢谢你! - Fred
3
我一直遇到这个问题,然后找到路径通过搜索结果挖掘,最终回到了这里,意识到我以前来过这里。这似乎可能是一个漏洞。 - James John McGuire 'Jahmic'

12

我建议您参考这个链接

根本原因似乎是在以下目录中缺少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,因此这必须与框架/VS的更新过程有关。


1
正如你所说,在我的情况下,我从未卸载过任何SDK,我只进行了更新。正如你提到的链接所述: “Visual Studio测试运行程序似乎使用x86版本的.NET Core SDK,因此,如果您卸载它(仅留下x64版本),则无法再使用Test Explorer运行基于该.NET Core版本的测试。” - Sebastian Inones

0

尝试将项目框架更改为已找到的框架,例如3.1或5.0:右键单击项目 -> 属性 -> 应用程序 -> 目标框架 输入图像描述


0
如果在 Azure 构建管道中遇到相同的问题,请将测试项目中的目标平台更改为X64
Visual Studio 配置为将 AnyCPU 测试作为 x86 运行,但只安装了 x64 SDK。设置 VS 以使用 x64 进行 AnyCPU 测试。 此外, 将 Microsoft.NET.Test.Sdk 升级到最新版本。
在我的情况下,我还必须向构建管道中添加特定的 .NET core 版本。 在此处找到特定的 .NET core 版本。 enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接