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 位版本)下。
为什么会这样说?
Sai*_*aif 13
从 CPU x86 更改为 x64 … 测试 > 任何 CPU 项目的进程架构 > x64
当您升级测试项目但未升级测试 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)
我也有这个问题。测试输出中显示的错误。
错误消息片段:
测试数据存储在 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 文件夹路径。
从“添加或删除程序”中查看安装情况:
有时,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)
并且一切正常。也许在你的项目中有这样的东西。
归档时间: |
|
查看次数: |
5133 次 |
最近记录: |