在 macOS 上安装 .NET

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

最新版本的 .NET 为 7。

支持的版本

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

下表列出了当前支持的 .NET 版本及其支持的 macOS 版本:

操作系统 .NET 7 (STS) .NET 6 (LTS)
macOS 13.0 “Ventura” ✔️ 7.0 ✔️ 6.0
macOS 12.0“Monterey” ✔️ 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 7 的独立安装程序:

下载并手动安装

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

首先,从以下站点之一下载 SDK 或运行时的二进制版本。 如果安装 .NET SDK,则无需安装相应的运行时:

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

或者,下载 .NET 二进制文件后,可以从保存文件的目录运行以下命令以提取运行时。 这也会使 .NET CLI 命令在终端可用并设置所需的环境变量。 请务必将 DOTNET_FILE 值更改为下载的二进制文件的名称:

DOTNET_FILE=dotnet-sdk-7.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

提示

前面的 export 命令只会使 .NET CLI 命令对运行它的终端会话可用。

你可以编辑 shell 配置文件,永久地添加这些命令。 Linux 提供了许多不同的 shell,每个都有不同的配置文件。 例如:

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

为 shell 编辑相应的源文件,并将 :$HOME/dotnet 添加到现有 PATH 语句的末尾。 如果不包含 PATH 语句,则使用 export PATH=$PATH:$HOME/dotnet 添加新行。

另外,将 export DOTNET_ROOT=$HOME/dotnet 添加至文件的末尾。

使用此方法可以将不同的版本安装到不同的位置,并明确选择应用程序要使用的对应版本。

基于 Arm 的 Mac

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

支持的操作

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

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

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

路径差异

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

路径冲突

从 .NET 6 开始, x64 .NET SDK 将安装到其自己的目录,如上一部分所述。 这使 .NET SDK 的 Arm64 和 x64 版本可以存在于同一台计算机上。 但是,不支持 .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 2019 for Mac

.NET SDK 版本 Visual Studio 版本
7.0 Visual Studio 2022 for Mac 17.4 或更高版本。
6.0 Visual Studio 2022 for Mac Preview 3 17.0 或更高版本。
3.1 Visual Studio 2019 for Mac 版本 8.4 或更高版本。

选择了 .NET 工作负载的 macOS Visual Studio 2019 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 6。 可通过指定 channel 开关以选择特定版本。 包括 runtime 开关以安装运行时。 否则,该脚本安装 SDK。

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

./dotnet-install.sh --channel 7.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 简介示例

后续步骤