本文說明如何安裝 .NET SDK snap 套件。 .NET SDK 的 snap 套件由 Canonical 提供並維護。 Snap 是 Linux 發行版本內建套件管理員的絕佳替代方案。
Snap 是應用程式及其相依性的套件組合,可在許多不同的 Linux 發行版本上運作。 您可從 Snap Store 探索和安裝 Snap。 有關 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 10 於 2025 年 11 月 11 日發行。 這些套件可能需要一些時間才能出現在套件管理源中,或者被特定的 Linux 發行版本所包含。
從 .NET 9 開始,.NET SDK 的 snap 套件會依版本特定識別碼發佈(例如,.NET 9 為 dotnet-sdk-90,.NET 10 為 dotnet-sdk-100)。 在 .NET 9 之前,所有 SDK 版本都以相同的識別碼發佈 dotnet-sdk,並且你透過一個通道指定版本。 此外,.NET 9 及以後的 snap 套件支援 x64 與 Arm64 架構,而早期版本僅支援 x64。 SDK 包含 ASP.NET Core 與 .NET 執行環境,並依 SDK 版本調整。
提示
Snapcraft .NET SDK 套件頁面包含針對發行版的安裝說明,說明如何安裝 Snapcraft 和 .NET。
開啟終端機。
使用
snap install安裝 .NET SDK snap 套件。--classic是必要參數。用於.NET 9及以後的版本
安裝特定版本的套件。 例如,以下指令可安裝 .NET SDK 10:
sudo snap install dotnet-sdk-100 --classic適用於 .NET 8 及更早版本
從套件安裝
dotnet-sdk並指定通道。 如果省略此參數,則會使用latest/stable。 例如,以下指令用於安裝 .NET SDK 8:sudo snap install dotnet-sdk --classic --channel 8.0/stable
系統會自動建立 dotnet Snap 別名,並對應至 Snap 套件的 dotnet 命令。
以下表格列出您可以安裝的 Snap 套件和渠道:
| .NET 版本 | Snap 套件或渠道 |
|---|---|
| 10(LTS) |
dotnet-sdk-100 (預覽) |
| 9 (STS) | dotnet-sdk-90 |
| 8 (LTS) | dotnet-sdk --channel 8.0/stable |
| 7 |
dotnet-sdk --channel 7.0/stable (不支援) |
| 6 |
dotnet-sdk --channel 6.0/stable (不支援) |
| 5 |
dotnet-sdk --channel 5.0/stable (不支援) |
| 3.1 |
dotnet-sdk --channel 3.1/stable (不支援) |
| 2.1 |
dotnet-sdk --channel 2.1/stable (不支援) |
2.匯出安裝位置
DOTNET_ROOT 環境變數常被工具用來判斷 .NET 安裝位置。 當 .NET 透過 Snap 安裝時,這個環境變數並未被設定。 您應該在設定檔中設定 DOTNET_ROOT 環境變數。 Snap 的檔案路徑使用下列格式:/snap/{package}/current。
對於 .NET 9 及更新版本,請使用版本專屬的套件名稱:
export DOTNET_ROOT=/snap/dotnet-sdk-100/current
對於 .NET 8 及更早版本,請使用共用的套件名稱:
export DOTNET_ROOT=/snap/dotnet-sdk/current
永久匯出環境變數
上述 export 命令只會設定其執行所在終端機工作階段的環境變數。
您可以編輯您的指令直譯器設定檔來永久新增命令。 有許多不同的 shells 可供 Linux 使用,且每個 shell 都有不同的特色。 例如:
- Bash Shell:~/.bash_profile、~/.bashrc
- Korn Shell:~/.kshrc 或 .profile
- Z Shell:_~/.zshrc* 或 .zprofile
編輯你 shell 的相關原始碼檔,並新增你已安裝的 .NET 版本的匯出指令。 對於 .NET 9+,請使用 export DOTNET_ROOT=/snap/dotnet-sdk-100/current(視需要調整版本號)。 對於.NET 8及更早版本,請使用export DOTNET_ROOT=/snap/dotnet-sdk/current。
3. 使用 .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。
疑難排解
dotnet 終端命令無作用
Snap 套件可以將別名對應至套件所提供的命令。 預設情況下,.NET SDK 的 snap 套件會為 dotnet 指令建立別名。 如果別名尚未建立或已被移除,請使用下列命令來映射別名。
針對 .NET 9 及以後版本:
sudo snap alias dotnet-sdk-100.dotnet dotnet
針對 .NET 8 及更早版本:
sudo snap alias dotnet-sdk.dotnet dotnet
無法在 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'
請嘗試下列步驟來修正此問題:
嘗試以符號將 Snap
dotnet可執行檔連結到程式要尋找的位置。dotnet命令正在尋找的兩個常見路徑如下:/usr/local/bin/dotnet/usr/share/dotnet
使用下列指令來建立 Snap 套件的符號連結。 對於 .NET 9 及更新版本,請使用版本專屬的套件名稱:
ln -s /snap/dotnet-sdk-100/current/dotnet /usr/local/bin/dotnet針對 .NET 8 及更早版本:
ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
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