在 macOS 上安装 .NET

本文介绍了 macOS 支持哪些版本的 .NET、如何安装 .NET,以及 SDK 和运行时之间的区别。

最新版本的 .NET 为 9。

支持的版本

下表列出了支持的 .NET 版本,以及它们支持的 macOS。 在 .NET 版本达到支持终止日期或 macOS 版本不再受支持之前,一直支持这些版本。

macOS 版本 .NET
macOS 15 "Sequoia" 9.0, 8.0
macOS 14“Sonoma” 9.0, 8.0
macOS 13“Ventura” 9.0, 8.0

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

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

Runtime 或 SDK

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

可以在 macOS 上安装两个运行时,这两个运行时都包含在 SDK 中。

  • ASP.NET Core 运行时
    运行 ASP.NET Core 应用。 包括 .NET 运行时。 不可用作安装程序。

  • .NET 运行时
    它可以运行普通的 .NET 应用,但不能运行专门的应用,如基于 ASP.NET Core 构建的应用。

SDK 用于生成和发布 .NET 应用和库。 最新的 SDK 支持为以前版本的 .NET 生成应用。 正常情况下只需要安装最新的 SDK。

安装 SDK 包括标准 .NET Runtime 和 ASP.NET Core Runtime。 例如,如果已安装 .NET SDK 9.0,则安装 .NET Runtime 9.0 和 ASP.NET Core 9.0 运行时。 但是,任何其他运行时版本都不会与 SDK 一起安装,而是需要单独进行安装。

选择如何安装 .NET

安装 .NET 的方法有很多种,有些产品可能会管理自己的 .NET 版本。 如果通过管理自己版本的 .NET 的软件安装 .NET,则可能无法在全系统范围内启用它。 确保了解通过其他软件安装 .NET 的影响。

如果在阅读了以下各部分的列表后仍不确定应该选择哪种方法,那么你可能需要使用 .NET 安装程序包

开发人员

  • Visual Studio Code - C# 开发工具包

    安装适用于 Visual Studio Code 的 C# 开发工具包 扩展以开发 .NET 应用。 该扩展可以使用已安装的 SDK,也可以为你安装 SDK。

用户和开发人员

  • .NET 安装程序

    使用独立安装程序来安装 .NET。 这种方法是在开发人员或用户计算机上安装 .NET 的典型方法。

  • 使用脚本安装 .NET

    一个可用于自动安装 SDK 或 Runtime 的 bash 脚本。 可以选择要安装的 .NET 版本。

  • 手动安装 .NET

    在需要将 .NET 安装到特定文件夹并与其他 .NET 副本分开运行时,请使用这种安装方法。

安装 .NET

安装程序包适用于 macOS,是安装 .NET 的一种简便方法。

  1. 打开浏览器并导航到 https://dotnet.microsoft.com/download/dotnet

  2. 选择要安装的 .NET 版本链接,如 .NET 8.0

    .NET 下载网站。列出了 6.0 至 9.0 版本。红色框突出显示了这些下载链接。

    此链接将转至包含该版本 .NET 下载链接的页面

    如果要安装 SDK,请选择最新的 .NET 版本。 SDK 支持为以前版本的 .NET 生成应用。

    提示

    如果不确定下载哪个版本,请选择标有“最新”的版本。

  3. 本页面提供 SDK 和 Runtime 的下载链接。 可在此处下载 .NET SDK 或 .NET Runtime。

    显示 SDK 和 Runtime 下载链接的 .NET 下载网站。SDK 和 Runtime 标题用红色框突出显示。每个框都有一个向下指向 macOS 部分的箭头。

    上图中突出显示了两个部分。 如果要下载 SDK,请参阅第 1 部分。 关于 .NET Runtime,请参阅第 2 部分。

    • 第 1 部分 (SDK)

      本部分是 SDK 下载区。 在 macOS 行的“安装程序”列下,列出了两个体系结构:Arm64 和 x64

      • 如果运行的是 Apple 处理器,如 M1 或 M3 Pro,请选择 Arm64
      • 如果运行的是 Intel 处理器,请选择 x64
    • 第 2 部分 (Runtime)

      本部分包含运行时下载。 请注意,macOS 行中“安装程序”列的链接是空的! 本部分为空,因为 ASP.NET Core Runtime 仅在 SDK 中提供,或通过“二进制安装”提供。

      向下滚动可找到标准 .NET Runtime 供下载。

      显示了 .NET 下载网站上的 .NET Runtime 下载表的屏幕截图。macOS 行用红色框突出显示。

      • 如果运行的是 Apple 处理器,如 M1 或 M3 Pro,请选择 Arm64
      • 如果运行的是 Intel 处理器,请选择 x64
  4. 下载完成后将其打开。

  5. 按照安装程序中的步骤操作。

    显示了仅在 macOS 上运行的 .NET 安装程序的屏幕截图。

手动安装 .NET

除了 macOS 安装程序,还可以下载并手动安装 SDK 和运行时。 手动安装通常作为持续集成方案中自动化的一部分来执行。 开发人员和用户通常希望使用“安装程序”

提示

使用“install-dotnet.sh 脚本”自动执行这些步骤。

  1. 打开浏览器并导航到 https://dotnet.microsoft.com/download/dotnet

  2. 选择要安装的 .NET 版本链接,如 .NET 8.0

    此链接将转至包含该版本 .NET 下载链接的页面

    如果要安装 SDK,请选择最新的 .NET 版本。 SDK 支持为以前版本的 .NET 生成应用。

    提示

    如果不确定下载哪个版本,请选择标有“最新”的版本。

    .NET 下载网站。列出了 6.0 至 9.0 版本。红色框突出显示了这些下载链接。

  3. 选择要安装的 SDK 或 Runtime 的链接。 查找 macOS 行中的“二进制文件”列。

    显示 SDK 下载链接的 .NET 下载网站。SDK 标头用红色框突出显示。框中的箭头向下指向 macOS 部分。

    • 如果运行的是 Apple 处理器,如 M1 或 M3 Pro,请选择 Arm64
    • 如果运行的是 Intel 处理器,请选择 x64
  4. 打开终端并导航到下载 .NET 二进制文件的位置。

  5. 将 tarball 提取到系统中需要 .NET 的位置。 下面的示例使用“主页”目录 ~/Applications/.dotnet

    mkdir -p ~/Applications/.dotnet
    tar -xf "dotnet-sdk-9.0.100-rc.2.24474.11-osx-arm64.tar" -C ~/Applications/.dotnet/
    

将目录更改为安装 .NET 的目录,然后运行 dotnet --info 命令,以便测试 .NET 是否正常工作:

chdir ~/Applications/.dotnet/
./dotnet --info

使用脚本安装 .NET

dotnet-install 脚本用于运行时的自动化和已停用的安装。 可通过 https://dot.net/v1/dotnet-install.sh 下载脚本。

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

提示

此过程末尾提供了这些命令的脚本代码段。

  1. 打开终端。

  2. 导航至要下载脚本的文件夹,如 ~/Downloads

  3. 如果没有 wget 命令,请使用 Brew 进行安装。

    brew install wget
    
  4. 运行以下命令以下载脚本:

    wget https://dot.net/v1/dotnet-install.sh
    
  5. 授予脚本执行权限

    chmod +x dotnet-install.sh
    
  6. 运行脚本以安装 .NET。

    脚本会默认将最新的 SDK 安装到 ~/.dotnet 目录中。

    ./dotnet-install.sh
    

以下是作为单个 bash 脚本的所有命令:

chdir ~/Downloads
brew install wget
wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh

通过导航至 ~/.dotnet 文件夹并运行 dotnet --info 命令来测试 .NET:

chdir ~/.dotnet
./dotnet --info

重要

有些程序可能会使用环境变量来查找系统中的 .NET,因此在打开新终端时,使用 dotnet 命令可能不会起作用。 有关解决此问题的帮助,请参阅让 .NET 在系统范围内可用部分。

为 Visual Studio Code 安装 .NET

Visual Studio Code 是一个功能强大的轻量级源代码编辑器,可在桌面上运行。 Visual Studio Code 可以使用系统中已安装的 SDK。 此外,如果尚未安装 .NET,则“C# 开发工具包”扩展将安装 .NET。

有关通过 Visual Studio Code 安装 .NET 的说明,请参阅 VS Code 中的 C# 入门

公证

为使用开发人员 ID 分发的 macOS 创建的软件必须经过公证,包括使用 .NET 创建的应用。

如果运行未经公证的应用,则会显示类似下图的错误窗口:

macOS Catalina 公证警报

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

验证

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

从官方下载页下载文件时,文件的校验和会显示在文本框中。 选择“复制”按钮将校验和值复制到剪贴板。

具有校验和的 .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#releases) 包含“版本”部分。 该部分中的表链接到每个 .NET 8 版本的下载和校验和文件:

    .NET 的 github 发行说明版本表

  2. 选择下载的 .NET 版本的链接。

    上一部分使用的 .NET SDK 8.0.100 位于 .NET 8.0.0 版本中。

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

    具有 .NET 校验和的下载表

  4. 右键单击“校验和”链接,然后将链接复制到剪贴板。

  5. 打开终端。

  6. 使用 curl -O {link} 下载校验和文件。

    用复制的链接替换以下命令中的链接。

    curl -O https://dotnetcli.blob.core.windows.net/dotnet/checksums/8.0.0-sha.txt
    
  7. 将校验和文件和 .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
    

基于 Arm 的 Mac

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

路径差异

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

路径变量

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

故障排除

以下部分可帮助排除故障:

让 .NET 在系统范围内可用

有时,系统上的应用(包括终端)会需要查找 .NET 的安装位置。 .NET macOS 安装程序包会自动进行系统配置。 但是,如果使用手动安装方法.NET 安装脚本,则必须在 PATH 变量中添加安装 .NET 的目录。

某些应用在尝试确定 .NET 安装位置时,可能会查找 DOTNET_ROOT 变量。

有许多不同的 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
    

System.Drawing.Common 和 libgdiplus

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

获取 libgdiplus 的简单方法是使用 MacOS 的 Homebrew ("brew") 包管理器。 安装 brew 后,在终端中运行以下命令以安装 libgdiplus

brew update
brew install mono-libgdiplus