本文說明如何安裝 .NET SDK snap 套件。 .NET SDK 的 snap 套件由 Canonical 提供並維護。 Snap 是 Linux 發行版本內建套件管理員的絕佳替代方案。
Snap 是應用程式及其相依性的套件組合,可在許多不同的 Linux 發行版本上運作。 您可從 Snap Store 探索和安裝 Snap。 欲了解更多關於 Snap 的資訊,請參閱 「開始」。
重要
如果你用 Snap 安裝 .NET,請用 Snap 來管理所有 .NET 的安裝。 避免將 Snap 與其他安裝方法(如套件管理器或腳本安裝)混用,因為混合方法可能會引起衝突。
警告
.NET的快速安裝可能會在執行 .NET tools 時遇到問題。 如果你想使用.NET工具,我們建議你使用 dotnet-install腳本或該 Linux 發行版的套件管理器安裝.NET。
已知問題是當 .NET 是透過 Snap 安裝時,dotnet watch 指令無法運作。
如果你打算使用 .NET 工具或 dotnet watch 指令,我們建議你使用 dotnet-install 腳本來安裝.NET。
必要條件
- 支援 Snap 的 Linux 發行版本。
-
snapdSnap 守護程序。
您的 Linux 發行版本可能已包含 Snap。 請嘗試從終端執行 snap,以查看命令是否正常運作。 如需支援的 Linux 發行版本清單,以及如何安裝 Snap 的指示,請參閱安裝 snapd。
.NET 版本
Microsoft 以兩種不同的支援政策發佈 .NET,分別是長期支援(LTS)與標準短期支援(STS)。 所有版本的品質都一樣。 唯一的差異是支援的時間長度。 LTS 版本提供 3 年的免費支援和修補程式。 STS 版本可獲得兩年的免費支援和修補程式。 更多資訊請參閱 .NET 支援政策。
目前 Microsoft 支援的 .NET 版本包括:
- 10.0 (LTS) — 支援將於 2028 年 11 月 14 日結束。
- 9.0 (STS) — 支援將於 2026 年 11 月 10 日結束。
- 8.0 (LTS)—支援將於 2026 年 11 月 10 日結束。
其他建置並發布 .NET 的機構可能會引入不同的支援政策。 務必向他們確認 .NET 的支援情況。
1.安裝 SDK
要安裝 .NET SDK,請使用版本特定的 snap 套件識別碼,因為這種方法能讓你並排安裝和管理多個 SDK 版本。 例如,使用 dotnet-sdk-80 表示 .NET 8,並使用 dotnet-sdk-100 表示 .NET 10。 SDK 包含 ASP.NET Core 與 .NET 執行環境,並依 SDK 版本調整。 本文使用 .NET 10 SDK snap 套件;如果你使用的是其他套件,請替換它。
開啟終端機。
使用
snap install安裝 .NET SDK snap 套件。以下指令可安裝 .NET SDK 10:
sudo snap install dotnet-sdk-100
下表列出您可以安裝的 .NET SDK snap 套件:
| .NET 版本 | Snap 套件 |
|---|---|
| 10(LTS) | dotnet-sdk-100 |
| 9 (STS) | dotnet-sdk-90 |
| 8 (LTS) | dotnet-sdk-80 |
2. 映射 dotnet 指令
因為 Snap 不會建立未帶版本號的 dotnet 指令,請建立符號連結,讓 dotnet 可供整個系統使用。 只有當你想將指令映射 dotnet 到這個特定的 Snap 安裝時,才建立這個連結。 如果你已經透過其他方式安裝了 .NET,建立此連結會覆寫原有的對應關係。
如果 /usr/local/bin/dotnet 已經存在,請在建立連結前移除。
sudo ln -s /snap/dotnet-sdk-100/current/usr/bin/dotnet /usr/local/bin/dotnet
3.匯出安裝位置
在你的 shell 設定檔中設定DOTNET_ROOT環境變數,因為工具會用它來判斷 .NET 安裝在哪裡。 Snap 安裝不會自動設定這個變數。 路徑格式如下: /snap/{package}/current/usr/lib/dotnet。
export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet
請替換100成你安裝的 SDK 版本,例如 80 .NET 8 或 90 .NET 9。
永久匯出環境變數
上述 export 命令只會設定其執行所在終端機工作階段的環境變數。
您可以編輯您的指令直譯器設定檔來永久新增命令。 有許多不同的 shells 可供 Linux 使用,且每個 shell 都有不同的特色。 例如:
- Bash Shell:~/.bash_profile、~/.bashrc
- Korn Shell:~/.kshrc 或 .profile
- Z Shell:_~/.zshrc* 或 .zprofile
編輯你 shell 的相關原始碼檔案,新增你已安裝的 .NET 版本的匯出指令,然後儲存你的修改。
例如: export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet 。
4.使用 .NET CLI
打開終端機並執行該 dotnet 指令。
dotnet
下列輸出顯示如下:
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
欲了解如何使用 .NET CLI,請參閱 .NET CLI overview。
疑難排解
無法在 WSL2 上安裝 Snap
必須先在 WSL2 執行個體上啟用 systemd,才能安裝 Snap。
以選擇的文字編輯器開啟
/etc/wsl.conf。請貼上以下設定:
[boot] systemd=true儲存檔案,並透過 PowerShell 重新啟動 WSL2 執行個體。 使用
wsl.exe --shutdown命令。
無法解析 dotnet 命令或 SDK
其他應用程式,例如程式碼開發環境(code IDE)或 Visual Studio Code 中的擴充功能,常會嘗試解析 .NET SDK 的位置。 一般而言,探索的進行方式是檢查 DOTNET_ROOT 環境變數,或找出 dotnet 可執行檔所在的位置。 一個快速安裝的 .NET SDK 可能會讓這些應用程式感到困惑。 當這些應用程式無法解析 .NET SDK 時,會顯示類似以下訊息的錯誤:
- 找不到指定的 SDK 'Microsoft.NET.Sdk'
- 無法找到指定的 SDK 'Microsoft.NET.Sdk.Web'
- 找不到指定的 SDK 'Microsoft.NET.Sdk.Razor'
請嘗試下列步驟來修正此問題:
- 完整 2。映射 dotnet 指令。
- 透過「
DOTNET_ROOT」來永久設定環境變數。
TLS/SSL 憑證錯誤
當.NET透過 Snap 安裝時,有些發行版可能會找不到.NET TLS/SSL 憑證,導致你在 restore 時收到錯誤:
Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]
若要解決此問題,請設定幾個環境變數:
export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null
憑證位置會因散發而有所不同。 以下是發現問題的發行版本位置:
| 分佈 | 位置 |
|---|---|
| Fedora | /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem |
| OpenSUSE | /etc/ssl/ca-bundle.pem |
| Solus | /etc/ssl/certs/ca-certificates.crt |
相關內容
- .NET CLI 概覽
- 如何啟用 .NET CLI 的 TAB 補全功能。
教學:用 .NET