簡體   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