在 macOS 上安装 .NET

在本文中,你将了解如何在 macOS 上安装 .NET。 .NET 由运行时和 SDK 组成。 运行时用于运行 .NET 应用,并且可能包含在应用中,但也可能未包含在应用中。 SDK 用于创建 .NET 应用和库。 .NET 运行时始终随 SDK 一起安装。

.NET 的最新版本是 8。

支持的版本

有两种类型的受支持版本:长期支持 (LTS) 版本和标准期限支持 (STS) 版本。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得为期三年的免费支持和补丁。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息,请参阅 .NET 支持策略

下表列出了当前支持的 .NET 版本以及支持它们的 macOS 版本。

操作系统 .NET 8 (LTS) .NET 7 (STS) .NET 6 (LTS)
macOS 14.0 "Sonoma" ✔️ 8.0 ✔️ 7.0 ✔️ 6.0
macOS 13.0 "Ventura" ✔️ 8.0 ✔️ 7.0 ✔️ 6.0
macOS 12.0“Monterey” ✔️ 8.0 ✔️ 7.0 ✔️ 6.0
macOS 11.0“Big Sur” ✔️ 7.0 ✔️ 6.0
macOS 10.15“Catalina” ✔️ 7.0 ✔️ 6.0

有关 .NET 版本及其支持生命周期的完整列表,请参阅 .NET 支持策略

不支持的版本

以下 .NET 版本 ❌ 不再受到支持:

  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

运行时信息

运行时用于运行使用 .NET 创建的应用。 应用作者发布应用时,可以在其应用中包含运行时。 如果作者未包含运行时,则由用户安装运行时。

macOS 上可以安装两种不同的运行时:

  • ASP.NET Core 运行时
    运行 ASP.NET Core 应用。 包括 .NET 运行时。

  • .NET 运行时
    此运行时是最简单的运行时,不包括任何其他运行时。 强烈建议安装 ASP.NET Core 运行时,以最大限度地提升与 .NET 应用的兼容性。

SDK 信息

SDK 用于生成和发布 .NET 应用和库。 安装 SDK 会包含两个运行时:ASP.NET Core 和 .NET。

公证

自 macOS Catalina(版本10.15)开始,所有在 2019 年 6 月 1 日之后生成并使用开发者 ID 扩散的软件都必须经过公证。 此要求适用于 .NET 运行时、.NET SDK 以及使用 .NET 创建的软件。

自 2020 年 2 月 18 日起,.NET 运行时和 SDK 安装程序都已经过公证。 以前发布的版本没有经过公证。 如果运行未经过公证的应用,将看到类似于下图的错误:

macOS Catalina 公证警报

若要详细了解强制执行的公证要求对 .NET 和 .NET 应用的影响,请参阅处理 macOS Catalina 公证

libgdiplus

使用 System.Drawing.Common 程序集的 .NET 应用程序要求安装 libgdiplus。

获取 libgdiplus 的一个简单方法是使用适用于 macOS 的 Homebrew (“brew”) 包。 在安装 brew 后,通过在终端(命令)提示符处执行以下命令来安装 libgdiplus:

brew update
brew install mono-libgdiplus

自动安装

macOS 具有独立的安装程序,可用于安装 .NET:

手动安装

除了使用适用于 .NET 的 macOS 安装程序,还可以下载并手动安装 SDK 和运行时。 手动安装通常作为持续集成测试的一部分执行。 对于开发人员或用户,一般使用安装程序会更好。

从以下站点之一下载 SDK 或运行时的二进制版本。 .NET SDK 包括相应的运行时:

提取已下载的文件并使用 export 命令将 DOTNET_ROOT 设置为提取文件夹的位置,然后确保 .NET 位于 PATH 中。 导出 DOTNET_ROOT 会使 .NET CLI 命令在终端中可用。 有关 .NET 环境变量的详细信息,请参阅 .NET SDK 和 CLI 环境变量

可以将不同版本的 .NET 提取到同一文件夹,这些版本并存。

示例

以下命令使用 Bash 将环境变量 DOTNET_ROOT 设置为当前工作目录,后跟 .dotnet。 如果该目录不存在,则会创建它。 DOTNET_FILE 环境变量是要安装的 .NET 二进制版本的文件名。 此文件会提取到 DOTNET_ROOT 目录中。 DOTNET_ROOT 目录及其 tools 子目录都添加到 PATH 环境变量中。

重要事项

如果运行这些命令,请记住将 DOTNET_FILE 值更改为下载的 .NET 二进制文件的名称。

DOTNET_FILE=dotnet-sdk-8.0.100-osx-x64.tar.gz
export DOTNET_ROOT=$(pwd)/.dotnet

mkdir -p "$DOTNET_ROOT" && tar zxf "$DOTNET_FILE" -C "$DOTNET_ROOT"

export PATH=$PATH:$DOTNET_ROOT

可以在同一文件夹中安装多个版本的 .NET。

还可以将 .NET 安装到由 HOME 变量或 ~ 路径标识的主目录:

export DOTNET_ROOT=$HOME/.dotnet

验证下载的二进制文件

下载安装程序后,请对其进行验证,以确保文件未被更改或损坏。 可以验证计算机上的校验和,然后将其与下载网站上报告的内容进行比较。

从官方下载页下载安装程序或二进制文件时,会显示该文件的校验和。 选择“复制”按钮将校验和值复制到剪贴板。

具有校验和的 .NET 下载页

使用 sha512sum 命令打印已下载的文件的校验和。 例如,以下命令报告 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件的校验和

$ sha512sum dotnet-sdk-8.0.100-linux-x64.tar.gz
13905ea20191e70baeba50b0e9bbe5f752a7c34587878ee104744f9fb453bfe439994d38969722bdae7f60ee047d75dda8636f3ab62659450e9cd4024f38b2a5  dotnet-sdk-8.0.100-linux-x64.tar.gz

将校验和与下载站点提供的值进行比较。

重要事项

尽管这些示例中显示了 Linux 文件,但此信息同样适用于 macOS。

使用校验和文件进行验证

.NET 发行说明包含校验和文件的链接,可用于验证下载的文件。 以下步骤介绍了如何下载校验和文件并验证 .NET 安装二进制文件:

  1. GitHub 上的 .NET 8 发行说明页面 (https://github.com/dotnet/core/tree/main/release-notes/8.0) 包含“版本”部分。 该部分中的表链接到每个 .NET 8 版本的下载和校验和文件:

    .NET 的 github 发行说明版本表

  2. 选择下载的 .NET 版本的链接。 上一部分使用的 .NET SDK 8.0.100 位于 .NET 8.0.0 版本中。

  3. 在版本页面,可以看到 .NET 运行时和 .NET SDK 版本,以及校验和文件的链接:

    具有 .NET 校验和的下载表

  4. 将链接复制到校验和文件。

  5. 使用以下脚本,但替换链接以下载合适的校验和文件:

    curl -O https://dotnetcli.blob.core.windows.net/dotnet/checksums/8.0.0-sha.txt
    
  6. 将校验和文件和 .NET 版本文件下载到同一目录后,请使用 sha512sum -c {file} --ignore-missing 命令来验证下载的文件。

    如果验证通过,会看到打印了 OK 状态的文件:

    $ sha512sum -c 8.0.0-sha.txt --ignore-missing
    dotnet-sdk-8.0.100-linux-x64.tar.gz: OK
    

    如果看到文件标记为失败,则下载的文件无效,不应使用。

    $ sha512sum -c 8.0.0-sha.txt --ignore-missing
    dotnet-sdk-8.0.100-linux-x64.tar.gz: FAILED
    sha512sum: WARNING: 1 computed checksum did NOT match
    sha512sum: 8.0.0-sha.txt: no file was verified
    

设置系统范围的环境变量

如果使用了手动安装示例部分中的说明,则设置的变量仅适用于当前终端会话。 将其添加到 shell 配置文件。 有许多不同的 shell 可用于 macOS,并且每个 shell 都有不同的配置文件。 例如:

  • Bash Shell:~/.profile、/etc/profile
  • Korn Shell:~/.kshrc 或 .profile
  • Z Shell:~/.zshrc 或 .zprofile

在 shell 配置文件中设置以下两个环境变量:

  • DOTNET_ROOT

    此变量设置为 .NET 安装到的文件夹,如 $HOME/.dotnet

    export DOTNET_ROOT=$HOME/.dotnet
    
  • PATH

    此变量应同时包含 DOTNET_ROOT 文件夹和 DOTNET_ROOT/tools 文件夹:

    export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
    

基于 Arm 的 Mac

以下各节介绍了在基于 Arm 的 Mac 上安装 .NET 时应考虑的内容。

支持的操作

下表描述了基于 Arm 的 Mac 支持哪些版本的 .NET:

.NET 版本 体系结构 SDK 中 IsInRole 中的声明 运行时 路径冲突
8 ARM64
8 X64
7 ARM64
7 X64
6 ARM64
6 X64

从 .NET 6 开始,.NET SDK 的 x64 和 Arm64 版本彼此独立存在。 如果发布了新版本,则每次安装都需要升级。

路径差异

在基于 Arm 的 Mac 上,所有 Arm64 版本的 .NET 都安装到正常的“/usr/local/share/dotnet/”文件夹中。 但是,当你安装 x64 版本的 .NET SDK 时,它会安装到 /usr/local/share/dotnet/x64/dotnet/ 文件夹中。

路径冲突

从 .NET 6 开始,x64 .NET SDK 安装到其自己的目录中,如上一节所述。 这使得 Arm64 和 x64 版本的 .NET SDK 可以在同一台机器上存在。 但是,.NET 6 之前的任何 x64 SDK 都不受支持,并且安装在与 Arm64 版本相同的位置,即“/usr/local/share/dotnet/”文件夹。 如果要安装不受支持的 x64 SDK,需要先卸载 Arm64 版本。 反过来也是如此,如果要安装 Arm64 版本,需要先卸载不支持的 x64 SDK。

路径变量

如果同时安装了 .NET 6 SDK 的 x64 和 Arm64 版本,则可能需要更改将 .NET 添加到系统路径的环境变量,例如 PATH 变量。 此外,一些工具依赖于 DOTNET_ROOT 环境变量,此变量也需要更新以指向适当的 .NET 6 SDK 安装文件夹。

使用 Visual Studio for Mac 安装

选定 .NET 工作负载后,可使用 Visual Studio for Mac 安装 .NET SDK。 若要开始在 macOS 上进行 .NET 开发,请参阅安装 Visual Studio 2022 for Mac

重要

Visual Studio for Mac 即将停用。 有关详细信息,请参阅 Visual Studio for Mac 的最新情况

.NET SDK 版本 Visual Studio 版本
8.0 Visual Studio 2022 for Mac 17.6.1 或更高版本。 (仅作为预览功能提供。)
7.0 Visual Studio 2022 for Mac 17.4 或更高版本。
6.0 Visual Studio 2022 for Mac 17.0 或更高版本。

选择了 .NET 工作负载的 macOS Visual Studio 2022 for Mac。

重要

Microsoft 已宣布停用 Visual Studio for Mac。 从 2024 年 8 月 31 日起,将不再支持 Visual Studio for Mac。 替代方案包括:

有关详细信息,请参阅 Visual Studio for Mac 停用公告

随 Visual Studio Code 一起安装

Visual Studio Code 是一个功能强大的轻量级源代码编辑器,可在桌面上运行。 Visual Studio Code 适用于 Windows、macOS 和 Linux。

虽然 Visual Studio Code 不像 Visual Studio 一样附带自动的 .NET 安装程序,但添加 .NET 支持非常简单。

  1. 下载并安装 Visual Studio Code
  2. 下载并安装 .NET SDK
  3. 从 Visual Studio Code 市场安装 C# 扩展

使用 Bash 自动化安装

dotnet-install 脚本用于运行时的自动化和非管理员安装。 可从 dotnet-install 脚本引用页下载该脚本。

此脚本默认安装最新的长期支持 (LTS) 版本,即 .NET 8。 可通过指定 channel 开关以选择特定版本。 包括 runtime 开关以安装运行时。 否则,该脚本安装 SDK。

可以使用以下命令安装 ASP.NET Core 运行时,以实现最大的兼容性。 ASP.NET Core 运行时还包括标准 .NET 运行时。

./dotnet-install.sh --channel 8.0 --runtime aspnetcore

Docker

容器提供了一种将应用程序与主机系统的其余部分隔离的轻量级方法。 同一计算机上的容器只共享内核,并使用为应用程序提供的资源。

.NET 可在 Docker 容器中运行。 官方 .NET Docker 映像发布到 Microsoft 容器注册表 (MCR),用户可在 Microsoft.NET Docker Hub 存储库中找到这些映像。 每个存储库包含 .NET(SDK 或运行时)和可以使用的操作系统的不同组合的映像。

Microsoft 提供适合特定场景的映像。 例如,ASP.NET Core 存储库提供针对在生产环境中运行 ASP.NET Core 应用生成的映像。

有关在 Docker 容器中使用 .NET 的详细信息,请参阅 .NET 和 Docker 简介示例

后续步骤