dotnet-install 指令碼參考
名稱
dotnet-install.ps1
| dotnet-install.sh
- 用來安裝 .NET SDK 和共用執行階段的指令碼。
概要
Windows:
dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed]
[-Channel <CHANNEL>] [-DryRun] [-FeedCredential]
[-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
[-NoCdn] [-NoPath] [-ProxyAddress] [-ProxyBypassList <LIST_OF_URLS>]
[-ProxyUseDefaultCredentials] [-Quality <QUALITY>] [-Runtime <RUNTIME>]
[-SkipNonVersionedFiles] [-UncachedFeed] [-KeepZip] [-ZipPath <PATH>] [-Verbose]
[-Version <VERSION>]
Get-Help ./dotnet-install.ps1
Linux/macOS:
dotnet-install.sh [--architecture <ARCHITECTURE>] [--azure-feed]
[--channel <CHANNEL>] [--dry-run] [--feed-credential]
[--install-dir <DIRECTORY>] [--jsonfile <JSONFILE>]
[--no-cdn] [--no-path] [--quality <QUALITY>]
[--runtime <RUNTIME>] [--runtime-id <RID>]
[--skip-non-versioned-files] [--uncached-feed] [--keep-zip] [--zip-path <PATH>] [--verbose]
[--version <VERSION>]
dotnet-install.sh --help
Bash 指令碼也能讀取 PowerShell 參數,因此您可以搭配 PowerShell 參數使用 Linux/macOS 系統上的指令碼。
描述
dotnet-install
指令碼會執行 .NET SDK 的非系統管理員安裝,其中包含 .NET CLI 和共用執行階段。 有兩個指令碼:
- 在 Windows 上運作的 PowerShell 指令碼。 如需安裝指示,請參閱在 Windows 上安裝。
- 在 Linux/macOS 上運作的 bash 指令碼。 如需安裝指示,請參閱在 Linux 上安裝和在 macOS 上安裝。
注意
.NET 會收集遙測資料。 若要深入了解及如何退出,請參閱 .NET SDK 遙測。
目的
指令碼的用途適用於持續整合 (CI) 案例,其中:
SDK 需要在不進行使用者互動而且沒有系統管理員權限的情況下安裝。
SDK 安裝不需要跨越多個 CI 執行保存。
一般事件序列:
- 會觸發 CI。
- CI 會使用下列其中一個指令碼來安裝 SDK。
- CI 會完成其工作,並清除暫存資料,包括 SDK 安裝。
若要設定開發環境或執行應用程式,請使用安裝程式,而不是這些指令碼。
建議的版本
我們建議您使用穩定版本的指令碼:
- Bash (Linux/macOS):https://dot.net/v1/dotnet-install.sh
- PowerShell (Windows):https://dot.net/v1/dotnet-install.ps1
指令碼的來源位於 dotnet/install-scripts GitHub 存放庫中。
指令碼行為
這兩個指令碼有相同的行為。 指令碼會從 CLI 組建放置區下載 ZIP/tarball 檔案,並且繼續將它安裝在預設位置或 -InstallDir|--install-dir
所指定的位置。
根據預設,安裝指令碼會下載並安裝 SDK。 如果您想要只取得共用執行階段,請指定 -Runtime|--runtime
引數。
根據預設,指令碼會將安裝位置新增到目前工作階段的 $PATH。 指定 -NoPath|--no-path
引數可以覆寫此預設行為。 指令碼不會設定 DOTNET_ROOT
環境變數。
重要
指令碼不會將安裝位置新增至使用者的 PATH
環境變數,您必須手動新增它。
執行文稿之前,請確定您的作業系統受到支援。 如需詳細資訊,請參閱在 Windows、Linux 和 macOS 上安裝 .NET。
您可以使用 -Version|--version
引數安裝特定版本。 必須以三段式版本號碼指定版本,例如 2.1.0
。 如果未指定版本,指令碼會安裝 latest
版本。
安裝指令碼不會更新 Windows 上的登錄。 安裝指令碼只會下載壓縮的二進位檔案,並予以複製到資料夾。 如果您想要更新登錄機碼值,請使用 .NET 安裝程式。
選項。
-Architecture|--architecture <ARCHITECTURE>
要安裝的 .NET 二進位檔本身的架構。 可能的值為 、、、、
x64
s390x
x86
arm
arm64
、、ppc64le
和 。riscv64
amd64
<auto>
預設值為<auto>
,代表目前正在執行的 OS 架構。-AzureFeed|--azure-feed
僅限內部使用。 允許使用不同的儲存體從下載 SDK 封存。 只有在--no-cdn 為 false 時,才會使用此參數。 預設值為
https://dotnetcli.azureedge.net/dotnet
。-Channel|--channel <CHANNEL>
指定安裝的來源通道。 可能的值是:
STS
:最新的標準期間支援版本。LTS
:最新的長期支援版本。- 代表特定版本的 A.B 格式兩段式版本 (例如
3.1
或8.0
)。 - A.B.Cxx 格式的三部分版本,代表特定的 SDK 版本(例如 8.0.1xx 或 8.0.2xx)。 自 5.0 版起提供。
使用
latest
以外的任何版本時,version
參數會覆寫channel
參數。預設值是
LTS
。 如需有關 .NET 支援通道的詳細資訊,請參閱 .NET Core 支援政策 \(英文\) 頁面。-DryRun|--dry-run
如果設定,指令碼將不會執行安裝。 其會改為顯示以一致方式安裝目前所要求 .NET CLI 版本時要使用的命令列。 例如,如果您指定
latest
版本,就會顯示特定版本的連結,以便在建置指令碼中以決定性方式使用此命令。 如果您想要自行進行安裝或下載,它也會顯示二進位檔位置。-FeedCredential|--feed-credential
用來作為要附加至 Azure 摘要的查詢字串。 這可允許變更 URL 以使用非公用 Blob 儲存體帳戶。
--help
印出指令碼的說明。 僅適用於 Bash 指令碼。 針對 PowerShell,請使用
Get-Help ./dotnet-install.ps1
。-InstallDir|--install-dir <DIRECTORY>
指定安裝路徑。 如果目錄不存在,則會建立它。 預設值為 Windows 上的 %LocalAppData%\Microsoft\dotnet,以及 Linux/macOS 上的 $HOME/.dotnet。 二進位檔會直接放在此目錄中。
-JSonFile|--jsonfile <JSONFILE>
指定將用來判斷 SDK 版本的 global.json 檔案路徑。 global.json 檔案必須有
sdk:version
的值。-NoCdn|--no-cdn
不允許從 Azure 內容傳遞網路 (CDN) 下載,而直接使用未快取的摘要。
-NoPath|--no-path
如果設定,就不會將安裝資料夾匯出至目前工作階段的路徑。 指令碼預設會修改此路徑,以讓 .NET CLI 在安裝後立即可供使用。
-ProxyAddress
如果設定,安裝程式會使用此 Proxy 進行 Web 要求。 (只適用於 Windows。)
-ProxyBypassList <LIST_OF_URLS>
如果以
ProxyAddress
設定,則提供會略過 Proxy 的逗號分隔 URL 清單。 (只適用於 Windows。)-ProxyUseDefaultCredentials
如果設定,當使用 Proxy 位址時,安裝程式會使用目前使用者的認證。 (只適用於 Windows。)
-Quality|--quality <QUALITY>
下載通道中指定品質的最新組建。 可能值為
daily
、signed
、validated
、preview
和GA
。 大部分的使用者都應該使用daily
、preview
或GA
品質。不同的品質值表示已安裝 SDK 或 Runtime 發行程序的不同階段。
daily
:SDK 或 Runtime 的最新組建。 它們會每天建置,且不會進行測試。 不建議用於實際執行環境,但通常可以用來在合併至產品之後立即測試特定功能或修正程式。 這些組建來自dotnet/installer
存放庫,因此如果您要尋找來自dotnet/sdk
的修正程式,則必須等候程式碼抵達流程,並將程式碼從 SDK 合併至安裝程式,然後才會出現在每日組建中。signed
:未驗證或公開發行的 Microsoft 簽署組建。 已簽署的組建是驗證、預覽和 GA 版本的候選項目。 此品質等級不適用於公用用途。validated
:建置已完成一些內部測試,但尚未發行為預覽或 GA。 此品質等級不適用於公開使用。preview
:下一版 .NET 的每月公開版本,僅供公開使用。 不建議用於實際執行環境。 目的在於允許使用者在發行前實驗及測試新的主要版本。GA
:.NET SDK 和 Runtime 的最終穩定版本。 適用於公開使用以及實際執行支援。
--quality
選項只能與--channel
搭配運作,但不適用於STS
和LTS
通道,且如果使用其中一個通道,則會忽略。針對 SDK 安裝,請使用
A.B
或A.B.Cxx
格式的channel
值。 針對執行階段安裝,請使用A.B
格式的channel
。請勿同時使用
version
和quality
參數。 指定quality
時,指令碼會自行決定適當的版本。自 5.0 版起提供。
-Runtime|--runtime <RUNTIME>
只安裝共用執行階段,而不是整個 SDK。 可能的值是:
dotnet
:Microsoft.NETCore.App
共用執行階段。aspnetcore
:Microsoft.AspNetCore.App
共用執行階段。windowsdesktop
;Microsoft.WindowsDesktop.App
共用執行階段。
--os <OPERATING_SYSTEM>
指定要安裝工具的作業系統。 可能的值為:
osx
、macos
、linux
、linux-musl
、freebsd
。參數是選用的,只有在需要覆寫指令碼偵測到的作業系統時,才應該使用。
-SharedRuntime|--shared-runtime
注意
此參數已被淘汰,在未來的指令碼版本中可能會將其移除。 建議的替代方案是
-Runtime|--runtime
選項。只安裝共用執行階段位元,而不是整個 SDK。 這個選項相當於指定
-Runtime|--runtime dotnet
。-SkipNonVersionedFiles|--skip-non-versioned-files
如果已經有非版本控制的檔案 (例如 dotnet.exe) 存在,便略過其安裝。
-UncachedFeed|--uncached-feed
僅限內部使用。 允許使用不同的儲存體從下載 SDK 封存。 只有在--no-cdn 為 true 時,才會使用此參數。
-KeepZip|--keep-zip
如果設定,則下載的 SDK 封存會在安裝之後保留。
-ZipPath|--zip-path <PATH>
如果設定,則下載的 SDK 封存會儲存在指定的路徑。
-Verbose|--verbose
顯示診斷資訊。
-Version|--version <VERSION>
代表特定的組建版本。 可能的值是:
latest
:通道上的最新組建 (與-Channel
選項搭配使用)。- 代表特定組建版本的 X.Y.Z 格式三段式版本;取代
-Channel
選項。 例如:2.0.0-preview2-006120
。
如果未指定,
-Version
會預設為latest
。
範例
將最新的長期支援 (LTS) 版本安裝至預設位置︰
Windows:
./dotnet-install.ps1 -Channel LTS
macOS/Linux:
./dotnet-install.sh --channel LTS
將 6.0.1xx SDK 的最新預覽版本安裝至指定的位置:
Windows:
./dotnet-install.ps1 -Channel 6.0.1xx -Quality preview -InstallDir C:\cli
macOS/Linux:
./dotnet-install.sh --channel 6.0.1xx --quality preview --install-dir ~/cli
安裝共用執行階段 6.0.0 版本:
Windows:
./dotnet-install.ps1 -Runtime dotnet -Version 6.0.0
macOS/Linux:
./dotnet-install.sh --runtime dotnet --version 6.0.0
取得指令碼並在公司 Proxy 後方安裝 6.0.2 版本 (僅適用於 Windows):
Invoke-WebRequest 'https://dot.net/v1/dotnet-install.ps1' -Proxy $env:HTTP_PROXY -ProxyUseDefaultCredentials -OutFile 'dotnet-install.ps1'; ./dotnet-install.ps1 -InstallDir '~/.dotnet' -Version '6.0.2' -Runtime 'dotnet' -ProxyAddress $env:HTTP_PROXY -ProxyUseDefaultCredentials;
取得指令碼並安裝 .NET CLI 單行範例:
Windows:
# Run a separate PowerShell process because the script calls exit, so it will end the current PowerShell session. &powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) <additional install-script args>"
macOS/Linux:
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin <additional install-script args>
設定環境變數
手動安裝 .NET 不會全系統新增環境變數,而且通常只適用於已安裝 .NET 的工作階段。 您應該為作業系統設定兩個環境變數:
DOTNET_ROOT
此變數會設定為已安裝 .NET 的資料夾,例如 Linux 和 macOS 的
$HOME/.dotnet
,以及 PowerShell for Windows 的$HOME\.dotnet
。PATH
此變數應同時包含
DOTNET_ROOT
資料夾和使用者的 .dotnet/tools 資料夾。 這通常位於 Linux 和 macOS 的$HOME/.dotnet/tools
,以及 PowerShell for Windows 的$HOME\.dotnet\tools
。
提示
針對 Linux 和 macOS,請使用 echo
命令在殼層設定檔中設定變數,例如 .bashrc:
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc
解除安裝
沒有解除安裝指令碼。 如需手動解除安裝 .NET 的相關資訊,請參閱如何移除 .NET Runtime 和 SDK。
dotnet-install.sh 的簽章驗證
簽章驗證是一項重要的安全性措施,可協助確保指令碼的真確性和完整性。 藉由驗證指令碼的簽章,您可以確定指令碼並未遭到竄改,且來自受信任的來源。
以下是如何使用 GPG 驗證 dotnet-install.sh
指令碼真確性的逐步指南:
- 安裝 GPG:GPG (GNU Privacy Guard) 是一種免費且開放原始碼的工具,可用來加密和簽署資料。 您可以依照 GPG 網站上的指示進行安裝。
- 匯入我們的公開金鑰:下載 install-scripts 公開金鑰檔案,然後執行命令
gpg --import dotnet-install.asc
將其匯入 GPG Keyring。 - 下載簽章檔案:bash 指令碼的簽章檔案位於
https://dot.net/v1/dotnet-install.sig
。 您可以使用wget
或curl
之類的工具下載它。 - 驗證簽章:若要驗證 bash 指令碼的簽章,請執行命令
gpg --verify dotnet-install.sig dotnet-install.sh
。 這會針對dotnet-install.sig
檔案中的簽章檢查dotnet-install.sh
檔案的簽章。 - 檢查結果:如果簽章有效,您將會看到包含
Good signature from "Microsoft DevUXTeamPrague <devuxteamprague@microsoft.com>"
的訊息。 這表示指令碼並未遭到竄改,而且可以信任。
準備環境
安裝 GPG 並匯入我們的公開金鑰是一次性作業。
sudo apt install gpg
wget https://dot.net/v1/dotnet-install.asc
gpg --import dotnet-install.asc
成功時,您應該會看到如下的輸出:
gpg: directory '/home/<user>/.gnupg' created
gpg: keybox '/home/<user>/.gnupg/pubring.kbx' created
gpg: /home/<user>/.gnupg/trustdb.gpg: trustdb created
gpg: key B9CF1A51FC7D3ACF: public key "Microsoft DevUXTeamPrague <devuxteamprague@microsoft.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
下載和驗證
匯入金鑰之後,您現在可以下載指令碼和簽章,然後確認指令碼符合簽章:
wget https://dot.net/v1/dotnet-install.sh
wget https://dot.net/v1/dotnet-install.sig
gpg --verify dotnet-install.sig dotnet-install.sh
成功時,您應該會看到如下的輸出:
gpg: Signature made <datetime>
gpg: using RSA key B9CF1A51FC7D3ACF
gpg: Good signature from "Microsoft DevUXTeamPrague <devuxteamprague@microsoft.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2B93 0AB1 228D 11D5 D7F6 B6AC B9CF 1A51 FC7D 3ACF
警告表示您不信任 Keyring 中的公開金鑰,但指令碼仍會經過驗證。 驗證命令傳回的結束代碼應該是 0
,表示成功。