[英]Visual Studio unable to run .NET Core tests
使用最新版本的 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) ==========
所以建议我需要安装 .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
所以感觉就像我安装了 2.2.0,因为它列在安装的许多版本列表中。
注意这一点(强调我的):
- 找到以下框架: 3.1.0 at [C:\\Program Files (x86) \\dotnet\\shared\\Microsoft.AspNetCore.App]
看起来它已将 3.1.0 安装到 .. x86
而其余 sdk 安装在Program Files
(x64 位版本)下。
为什么会这样说?
当您升级测试项目但未升级测试 SDK 时,有时会发生这种情况。 如果您升级 Visual Studio 但没有引用最新的测试 sdks,也会发生这种情况。
在您的测试项目的.csproj
文件中,您应该找到类似以下内容的内容
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
在您的testproject.csproj
。
这些通常与 Visual Studio 版本同步,因此最新的 Visual Studio 是 16.4。 尝试升级该引用以匹配您的 Visual Studio 版本,即
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
对于最新的稳定版本或
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0-preview-20191115-01" />
为最新预览。
此错误的另一个来源可能是,您的项目是 .NET Core 3.x 项目,但您的单元测试项目仍然是 .NET Core 2.2。 确保它们都使用相同版本的 .NET Core
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
命令dotnet run
, dotnet test
... 等他们都使用他们可以找到的最新 dotnet 版本,这个版本可以通过dotnet --info
验证,就像你已经完成的那样,在你的情况下,最新安装的是 3.1.0。 如果要运行不同版本的dotnet
,则需要按照此处所述创建 global.json 文件选择要使用的 .NET Core 版本
来自链接资源
当您运行 SDK 命令时,SDK 使用最新安装的版本。
dotnet
以交互方式搜索 global.json 文件,从当前工作目录向上反向导航路径
dotnet
使用在找到的第一个 global.json 中指定的 SDK
只需在您的解决方案文件夹中创建 global.json 并定义所需的正确 sdk 版本
我也有这个问题。 测试输出中显示的错误。
错误消息片段:
测试数据存储在 0.153 秒内打开。 ---------- 为请求的测试运行启动测试发现 ---------- Microsoft.VisualStudio.TestPlatform.ObjectModel.TestPlatformException: Testhost process exited with error: It was not possible to find any兼容框架版本未找到框架“Microsoft.NETCore.App”,版本“2.1.0”。
- 找到以下框架: 3.1.9 at [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(Boolean testHostExited) 在 Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.ProxyOperationManager.SetupChannel(IEnumerable`1 源,字符串 runSettings) 在 Microsoft.VisualStudio.TestPlatform.CrossPlatform.CrossPlatform Client.ProxyDiscoveryManager.DiscoverTests(DiscoveryCriteria discoveryCriteria, ITestDiscoveryEventsHandler2 eventHandler) ========== 测试发现中止:0 测试在 1.4 秒内找到 ========== 执行文件中的所有测试: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 文件夹路径。
“添加或删除程序”中的安装方式:
将特定的 .NET 核心版本添加到构建管道解决了我的问题。 在此处查找特定的 .NET 核心版本
有时,visual studio 中的测试问题通过更改为 x64 架构来解决。 你可以试试吗? 测试-> 测试设置-> 默认处理器架构。
还有一点是,默认加载不正确的DLL。 所以,visual studio 是由我面对这样的事情生成的:
<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>
所以,问题在于否则。 我将其替换为:
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
并且一切正常。 可能在你的项目中你有这样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.