![為什麼在安裝 .NET SDK 後執行 `dotnet` 命令時出現錯誤「無法載入命令」?](https://rvso.com/image/1073522/%E7%82%BA%E4%BB%80%E9%BA%BC%E5%9C%A8%E5%AE%89%E8%A3%9D%20.NET%20SDK%20%E5%BE%8C%E5%9F%B7%E8%A1%8C%20%60dotnet%60%20%E5%91%BD%E4%BB%A4%E6%99%82%E5%87%BA%E7%8F%BE%E9%8C%AF%E8%AA%A4%E3%80%8C%E7%84%A1%E6%B3%95%E8%BC%89%E5%85%A5%E5%91%BD%E4%BB%A4%E3%80%8D%EF%BC%9F.png)
我跟著官方說明安裝最新版本的 .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。