dotnet-install 脚本引用
注意
安装脚本的行为已更改。 它从新的网络位置下载 .NET。 有关详细信息,请参阅 关键:.NET 安装链接正在更改。
“属性”
dotnet-install.ps1
|
dotnet-install.sh
- 用于安装 .NET SDK 和共享运行时的脚本。
摘要
Windows:
dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed]
[-Channel <CHANNEL>] [-DryRun] [-FeedCredential]
[-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
[-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-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 开关。因此,可以在 Linux/macOS 系统上将 PowerShell 开关与脚本结合使用。
描述
dotnet-install
脚本执行 .NET SDK 的非管理员安装,其中包含 .NET CLI 和共享运行时。 有两个脚本:
- 在 Windows 上运行的 PowerShell 脚本。 有关安装说明,请参阅在 Windows 上安装。
- 在 Linux/macOS 上运行的 bash 脚本。 有关安装说明,请参阅在 Linux 上安装和在 macOS 上安装。
注意
.NET 会收集遥测数据。 若要了解详细信息和退出方式,请查看 .NET SDK 遥测。
目标
脚本的预期用途是用于持续集成 (CI) 方案,其中:
需要在无需用户交互和管理员权限的情况下安装 SDK。
无需在多个 CI 运行中保留 SDK 安装。
典型的事件序列:
- 触发 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
参数安装特定版本。 必须将版本指定为由 3 部分构成的版本号,例如 2.1.0
。 如果未指定版本,则脚本将安装 latest
版本。
安装脚本不会更新 Windows 上的注册表。 它们只是下载压缩的二进制文件并将其复制到文件夹。 如果要更新注册表项值,请使用 .NET 安装程序。
选项
-Architecture|--architecture <ARCHITECTURE>
要安装的 .NET 二进制文件的体系结构。 可能的值为
<auto>
、、amd64
、x64
x86
arm64
arm
s390x
ppc64le
和。riscv64
默认值为<auto>
,它表示当前正在运行的操作系统体系结构。-AzureFeed|--azure-feed
仅限内部使用。 允许使用其他存储从中下载 SDK 存档。 默认为
https://builds.dotnet.microsoft.com/dotnet
。-Channel|--channel <CHANNEL>
指定安装的源通道。 可能的值为:
-
STS
:最新的标准期限支持版本。 -
LTS
:最新的长期支持版本。 - 表示特定版本的由两部分构成的 A.B 格式版本(例如
3.1
或8.0
)。 - A.B.Cxx 格式的三部分版本,表示特定的 SDK 版本(例如 8.0.1xx 或 8.0.2xx)。 自 5.0 版本起可用。
使用
version
以外的任何版本时,channel
参数将替代latest
参数。默认值为
LTS
。 有关 .NET 支持频道的详细信息,请参阅 .NET 支持策略页。-
-DryRun|--dry-run
如果设置,脚本将不会执行安装。 而会显示要使用哪个命令行来持续安装当前请求的 .NET CLI 版本。 例如,如果指定版本
latest
,它将显示特定版本的链接,以便可在生成脚本中明确地使用此命令。 如果想要自行安装或下载,它还会显示二进制文件位置。-FeedCredential|--feed-credential
用作追加到 Azure 源的查询字符串。 这允许更改 URL 以使用非公共 blob 存储帐户。
--help
打印脚本帮助。 仅适用于 bash 脚本。 对于 PowerShell,请使用
Get-Help ./dotnet-install.ps1
。-InstallDir|--install-dir <DIRECTORY>
指定安装路径。 如果不存在,则会创建该目录。 默认值为“%LocalAppData%\Microsoft\dotnet”(在 Windows 上)和“$HOME/.dotnet”(在 Linux/macOS 上) 。 会将二进制文件直接放入目录中。
-JSonFile|--jsonfile <JSONFILE>
指定将用于确定 SDK 版本的 global.json 文件的路径。 global.json 文件必须具有 的值。
-NoPath|--no-path
如果设定,不会将安装文件夹导出到当前会话的路径。 默认情况下,该脚本会修改 PATH,这会使 .NET CLI 在安装后立即可用。
-ProxyAddress
如果设置,安装程序发出 Web 请求时将使用该代理。 (仅适用于 Windows。)
-ProxyBypassList <LIST_OF_URLS>
如果设置了
ProxyAddress
,它会提供一个以逗号分隔的 URL 列表,表中的 URL 将绕过代理。 (仅适用于 Windows。)-ProxyUseDefaultCredentials
如果设置,在使用代理地址时,安装程序会使用当前用户的凭据。 (仅适用于 Windows。)
-Quality|--quality <QUALITY>
在通道中下载指定质量的最新版本。 可能的值为:
daily
、signed
、validated
、preview
和GA
。 大多数用户应使用daily
、preview
或GA
质量。不同的质量值表示所安装的 SDK 或运行时的发布过程的不同阶段。
-
daily
:SDK 或运行时的最新内部版本。 它们每天都在生成,不会进行测试。 不建议将其用于生产用途,但通常可用于在将特定功能或修补程序合并到产品后立即进行测试。 这些内部版本来自dotnet/installer
存储库,因此,如果要从dotnet/sdk
中查找修补程序,则必须等待代码流式处理,并从 SDK 合并到安装程序,然后才能出现在日常内部版本中。 -
signed
:未验证或公开发布的 Microsoft 签名内部版本。 签名的内部版本是验证版、预览版和正式版的候选版本。 此质量级别不适用于公共用途。 -
validated
:进行了一些内部测试,但尚未作为预览版或正式版发布的内部版本。 此质量级别不适用于公共用途。 -
preview
:下一版 .NET 的每月公开版本,旨在公用。 不建议用于生产环境。 旨在使用户能够在发布之前试验和测试新的主版本。 -
GA
:.NET SDK 和运行时的最终稳定版本。 旨在用于公共用途和生产支持。
--quality
选项仅与--channel
结合使用,但不适用于STS
和LTS
通道,如果使用其中一个通道,将忽略该选项。对于 SDK 安装,请使用
channel
或A.B
格式的A.B.Cxx
值。 对于运行时安装,请使用channel
格式的A.B
。请勿同时使用
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 存档。 此参数覆盖
-AzureFeed|--azure-feed
。-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
获取脚本并在公司代理后面安装 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 安装到的文件夹,例如
$HOME/.dotnet
(对于 Linux 和 macOS )和 PowerShell 中的$HOME\.dotnet
(对于 Windows)。PATH
此变量应同时包含
DOTNET_ROOT
文件夹和用户的 .dotnet/tools 文件夹。 通常,在 Linux 和 macOS 上为$HOME/.dotnet/tools
,在 Windows 上为 PowerShell 中的$HOME\.dotnet\tools
。
提示
对于 Linux 和 macOS,请使用 echo
命令在 shell 配置文件中设置变量,例如 .bashrc:
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc
卸载
没有卸载脚本。 有关如何手动卸载 .NET 的信息,请参阅如何删除 .NET 运行时和 SDK。
dotnet-install.sh 的签名验证
签名验证是一个重要的安全措施,有助于确保脚本的真实性和完整性。 通过验证脚本的签名,可以确保脚本未被篡改,且来自受信任的源。
下面是有关如何使用 GPG 验证 dotnet-install.sh
脚本真实性的分步指南:
- 安装 GPG:GPG (GNU Privacy Guard) 是一种用于加密和签名数据的免费开源工具。 可以按照 GPG 网站上的说明安装它。
- 导入公钥:下载 install-scripts 公钥文件,然后通过运行
gpg --import dotnet-install.asc
命令将其导入 GPG 密钥环。 - 下载签名文件:bash 脚本的签名文件在
https://dot.net/v1/dotnet-install.sig
可用。 可以使用wget
和curl
等工具下载它。 -
验证签名:若要验证 bash 脚本的签名,请运行
gpg --verify dotnet-install.sig dotnet-install.sh
命令。 这将根据dotnet-install.sh
文件中的签名检查dotnet-install.sig
文件的签名。 -
检查结果:如果签名有效,你将看到一条包含
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
该警告表示你不信任密钥环中的公钥,但脚本仍通过验证。 验证命令返回的退出代码应该是 0
,表示成功。