[英]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.