繁体   English   中英

Visual Studio 无法运行 .NET Core 测试

[英]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 位版本)下。

为什么会这样说?

编辑2:

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

从 CPU x86 更改为 x64 … 测试 > 任何 CPU 项目的进程架构 > 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 rundotnet 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM