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 和共用執行階段。 有兩個指令碼:

注意

.NET 會收集遙測資料。 若要深入了解及如何退出,請參閱 .NET SDK 遙測

目的

指令碼的用途適用於持續整合 (CI) 案例,其中:

  • SDK 需要在不進行使用者互動而且沒有系統管理員權限的情況下安裝。

  • SDK 安裝不需要跨越多個 CI 執行保存。

    一般事件序列:

    • 會觸發 CI。
    • CI 會使用下列其中一個指令碼來安裝 SDK。
    • CI 會完成其工作,並清除暫存資料,包括 SDK 安裝。

若要設定開發環境或執行應用程式,請使用安裝程式,而不是這些指令碼。

我們建議您使用穩定版本的指令碼:

指令碼的來源位於 dotnet/install-scripts GitHub 存放庫中。

指令碼行為

這兩個指令碼有相同的行為。 指令碼會從 CLI 組建放置區下載 ZIP/tarball 檔案,並且繼續將它安裝在預設位置或 -InstallDir|--install-dir 所指定的位置。

根據預設,安裝指令碼會下載並安裝 SDK。 如果您想要只取得共用執行階段,請指定 -Runtime|--runtime 引數。

根據預設,指令碼會將安裝位置新增到目前工作階段的 $PATH。 指定 -NoPath|--no-path 引數可以覆寫此預設行為。 指令碼不會設定 DOTNET_ROOT 環境變數。

重要

指令碼不會將安裝位置新增至使用者的 PATH 環境變數,您必須手動新增它。

執行指令碼之前,請安裝所有必要的相依性 (英文)

您可以使用 -Version|--version 引數安裝特定版本。 必須以三段式版本號碼指定版本,例如 2.1.0。 如果未指定版本,指令碼會安裝 latest 版本。

安裝指令碼不會更新 Windows 上的登錄。 安裝指令碼只會下載壓縮的二進位檔案,並予以複製到資料夾。 如果您想要更新登錄機碼值,請使用 .NET 安裝程式。

選項。

  • -Architecture|--architecture <ARCHITECTURE>

    要安裝的 .NET 二進位檔本身的架構。 可能的值為 <auto>amd64x64x86arm64arms390xppc64le。 預設值為 <auto>,代表目前正在執行的 OS 架構。

  • -AzureFeed|--azure-feed

    僅限內部使用。 允許使用不同的儲存體從下載 SDK 封存。 只有在--no-cdn 為 false 時,才會使用此參數。 預設值為 https://dotnetcli.azureedge.net/dotnet

  • -Channel|--channel <CHANNEL>

    指定安裝的來源通道。 可能的值是:

    • STS:最新的標準期間支援版本。
    • LTS:最新的長期支援版本。
    • 代表特定版本的 A.B 格式兩段式版本 (例如 3.16.0)。
    • A.B.Cxx 格式的三段式版本,代表特定 SDK 版本 (例如 6.0.1xx 或 6.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>

    下載通道中指定品質的最新組建。 可能值為 dailysignedvalidatedpreviewGA。 大部分的使用者都應該使用 dailypreviewGA 品質。

    不同的品質值表示已安裝 SDK 或 Runtime 發行程序的不同階段。

    • daily:SDK 或 Runtime 的最新組建。 它們會每天建置,且不會進行測試。 不建議用於實際執行環境,但通常可以用來在合併至產品之後立即測試特定功能或修正程式。 這些組建來自 dotnet/installer 存放庫,因此如果您要尋找來自 dotnet/sdk 的修正程式,則必須等候程式碼抵達流程,並將程式碼從 SDK 合併至安裝程式,然後才會出現在每日組建中。
    • signed:未驗證或公開發行的 Microsoft 簽署組建。 已簽署的組建是驗證、預覽和 GA 版本的候選項目。 此品質等級不適用於公用用途。
    • validated:建置已完成一些內部測試,但尚未發行為預覽或 GA。 此品質等級不適用於公開使用。
    • preview:下一版 .NET 的每月公開版本,僅供公開使用。 不建議用於實際執行環境。 目的在於允許使用者在發行前實驗及測試新的主要版本。
    • GA:.NET SDK 和 Runtime 的最終穩定版本。 適用於公開使用以及實際執行支援。

    --quality 選項只能與 --channel 搭配運作,但不適用於 STSLTS 通道,且如果使用其中一個通道,則會忽略。

    針對 SDK 安裝,請使用 A.BA.B.Cxx 格式的 channel 值。 針對執行階段安裝,請使用 A.B 格式的 channel

    請勿同時使用 versionquality 參數。 指定 quality 時,指令碼會自行決定適當的版本。

    自 5.0 版起提供。

  • -Runtime|--runtime <RUNTIME>

    只安裝共用執行階段,而不是整個 SDK。 可能的值是:

    • dotnetMicrosoft.NETCore.App 共用執行階段。
    • aspnetcoreMicrosoft.AspNetCore.App 共用執行階段。
    • windowsdesktopMicrosoft.WindowsDesktop.App 共用執行階段。
  • --os <OPERATING_SYSTEM>

    指定要安裝工具的作業系統。 可能的值為:osxmacoslinuxlinux-muslfreebsd

    參數是選用的,只有在需要覆寫指令碼偵測到的作業系統時,才應該使用。

  • -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 指令碼真確性的逐步指南:

  1. 安裝 GPG:GPG (GNU Privacy Guard) 是一種免費且開放原始碼的工具,可用來加密和簽署資料。 您可以依照 GPG 網站上的指示進行安裝。
  2. 匯入我們的公開金鑰:下載 install-scripts 公開金鑰檔案,然後執行命令 gpg --import dotnet-install.asc 將其匯入 GPG Keyring。
  3. 下載簽章檔案:bash 指令碼的簽章檔案位於 https://dot.net/v1/dotnet-install.sig。 您可以使用 wgetcurl 之類的工具下載它。
  4. 驗證簽章:若要驗證 bash 指令碼的簽章,請執行命令 gpg --verify dotnet-install.sig dotnet-install.sh。 這會針對 dotnet-install.sig 檔案中的簽章檢查 dotnet-install.sh 檔案的簽章。
  5. 檢查結果:如果簽章有效,您將會看到包含 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,表示成功。

另請參閱