為什麼在安裝 .NET SDK 後執行 `dotnet` 命令時出現錯誤「無法載入命令」?

為什麼在安裝 .NET SDK 後執行 `dotnet` 命令時出現錯誤「無法載入命令」?

我跟著官方說明安裝最新版本的 .NET SDK。我選擇了“套件管理器(Microsoft feed)”方法。完成這些說明並運行後dotnet --version,我得到以下輸出:

The command could not be loaded, possibly because:
  * You intended to execute a .NET application:
      The application '--version' does not exist.
  * You intended to execute a .NET SDK command:
      No .NET SDKs were found.

Download a .NET SDK:
https://aka.ms/dotnet/download

Learn about SDK resolution:
https://aka.ms/dotnet/sdk-not-found

我閱讀了這兩個網頁,但它們沒有為我提供解決方案。其中一個讓我回到安裝 .NET SDK 流程的開始。另一個討論 SDK 解析度如何運作,主要是在應用程式運行時。但這對我使用 CLI 工具沒有幫助dotnet

我發現有趣的是,如果我運行dotnet --info,我會得到以下輸出,這證實了它認為沒有安裝 SDK:

Host:
  Version:      7.0.9
  Architecture: x64
  Commit:       8e9a17b221

.NET SDKs installed:
  No SDKs were found.

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/usr/lib/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

我認為這很奇怪,因為如果我使用 APT 來檢查我安裝了哪些軟體包,我會看到輸出,在我按照官方安裝說明進行操作後,我確實安裝了一個版本的 SDK(7.0.109):

$ sudo apt list --installed | grep dotnet

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

dotnet-apphost-pack-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-host-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-hostfxr-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-runtime-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-sdk-7.0/jammy,now 7.0.306-1 amd64 [installed]
dotnet-targeting-pack-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]

答案1

我的問題是,我透過 Microsoft feed 套件和 Ubuntu feed 套件的組合安裝了 .NET SDK 版本 7。這在他們的文章中有更詳細的描述APT 故障排除步驟。我透過 WSL 使用 22.04,所以這個問題也適用於我。

我的解決方案是遵循他們為因任何原因不依賴 Microsoft feed 的人推薦的方法,即從我的系統中完全刪除 Microsoft feed,然後按照他們的說明使用 Ubuntu feed 進行安裝。執行此操作後,我的dotnet --info輸出顯示已安裝的 SDK:

.NET SDK:
 Version:   7.0.109
 Commit:    3e9283a8e9

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  23.04
 OS Platform: Linux
 RID:         ubuntu.23.04-x64
 Base Path:   /usr/lib/dotnet/sdk/7.0.109/

Host:
  Version:      7.0.9
  Architecture: x64
  Commit:       8e9a17b221

.NET SDKs installed:
  7.0.109 [/usr/lib/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/usr/lib/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

因為我使用的是 22.04,但我想安裝和使用最新的非預覽版 SDK(截至今天為 7),所以我必須先升級到 23.04。我按照在第 3 方網站上找到的說明執行此操作,該網站將運行sudo do-release-upgrade.當我這樣做時,它告訴我,我已經運行了可以升級到的最新版本,除非我調整設定檔並重試。所以我按照說明進行操作,然後再次嘗試升級,然後我運行 23.04,以便我可以執行上述步驟來安裝 .NET SDK 7。

相關內容