在 Windows 上安装 .NET

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

与 .NET Framework 不同的是,.NET 与 Windows 版本无关。 只能在 Windows 上安装单个版本的 .NET Framework。 但 .NET 是独立的,可以安装在计算机的任何地方。 有些应用可能包含自己的 .NET 副本。

默认情况下,.NET 安装在计算机上的 Program Files\dotnet 目录中,除非安装方法选择了不同的目录。

.NET 由运行时和 SDK 组成。 运行时用于运行 .NET 应用,而 SDK 则用于创建应用。

选择正确的运行时

Windows 有三种不同的运行时,可以运行不同类型的应用。 SDK 包括所有三个运行时,而一个运行时的安装程序可能包括一个额外的运行时。 下表描述了特定 .NET 安装程序包含的运行时:

安装程序 包含 .NET 运行时 包含 .NET 桌面运行时 包含 ASP.NET Core 运行时
.NET 运行时
.NET 桌面运行时
ASP.NET Core 运行时 No
.NET SDK

为了确保能够在 Windows 上运行所有 .NET 应用,请同时安装 ASP.NET Core Runtime 和 .NET Desktop Runtime。 ASP.NET Core Runtime 可运行基于 Web 的应用,而 .NET Desktop Runtime 可运行桌面应用,如 Windows Presentation Foundation (WPF) 或 Windows Forms 应用。

选择如何安装 .NET

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

如果不确定在查看以下部分中的列表后应选择哪种方法,则可能需要使用 .NET 安装程序

开发人员

  • Visual Studio

    若要使用 Visual Studio 开发 .NET 应用,请使用 Visual Studio 来安装 .NET。 Visual Studio 会管理自己的 .NET 副本。 此方法安装 SDK、运行时和 Visual Studio 模板。

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

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

用户和开发人员

  • .NET 安装程序

    使用 Windows Installer 包安装 .NET,这是你运行的可执行文件。 此方法可以安装 SDK 和运行时。 安装是在系统范围内执行的。

  • Windows 程序包管理器 (WinGet)

    如果要通过命令行管理 .NET,请使用 WinGet 来安装 .NET。 此方法可以安装 SDK 和运行时。 安装是在系统范围内执行的。

  • PowerShell

    可自动安装 SDK 或运行时的 PowerShell 脚本。 可以选择要安装的 .NET 版本。

支持的版本

下表列出了当前支持的 .NET 版本以及支持它们的 Windows 版本。 这些版本在 .NET 版本达到支持终止日期Windows 版本达到生命周期之前仍受支持。

提示

提醒一下,此表适用于新式 .NET(而不是 .NET Framework)。 若要安装 .NET Framework,请参阅 .NET Framework 安装指南

Windows 10 版本终止服务日期按版本分段。 下表中仅考虑家庭版、专业版、专业教育版和专业工作站版。 查看 Windows 生命周期事实表单,了解具体的详细信息。

操作系统 .NET 9 (体系结构) .NET 8(体系结构)
Windows 11(24H2、23H2、22H2 Ent/Edu) ✔️ x64、x86、Arm64 ✔️ x64、x86、Arm64
Windows 10 (22H2+) ✔️ x64、x86、Arm64 ✔️ x64、x86、Arm64
Windows Server 2025
Windows Server 2022
Windows Server 2019
Windows Server 版本 1903 或更高版本
Windows Server 2016
Windows Server 2012 R2
Windows Server 2012
✔️ x64、x86 ✔️ x64、x86
Windows Server Core 2012(和 R2) ✔️ x64、x86 ✔️ x64、x86
Nano Server (2022,2019) ✔️ x64 ✔️ x64
Windows 8.1
Windows 7 SP1 ESU

提示

+ 表示最低版本。

Windows 7/8.1/Server 2012

Windows 7 和 Windows 8.1不再支持 .NET 版本。 最后支持的版本是 .NET 6,支持于 2024 年 11 月 12 日结束。

仍受任何仍在支持的 .NET 版本支持 Windows Server 2012

这三个版本的 Windows 都要求安装更多的依赖项:

操作系统 先决条件
Windows 7 SP1 ESU - Microsoft Visual C++ 2015-2019 Redistributable 64 位 / 32 位
- KB3063858 64 位 / 32 位
- Microsoft 根证书颁发机构 2011(仅限 .NET Core 2.1 脱机安装程序)
Windows 8.1 Microsoft Visual C++ 2015-2019 Redistributable 64 位 / 32 位
Windows Server 2012 Microsoft Visual C++ 2015-2019 Redistributable 64 位 / 32 位
Windows Server 2012 R2 Microsoft Visual C++ 2015-2019 Redistributable 64 位 / 32 位

如果收到与以下 dll 之一相关的错误,也需要满足上述要求:

  • api-ms-win-crt-runtime-l1-1-0.dll
  • api-ms-win-cor-timezone-l1-1-0.dll
  • hostfxr.dll

基于 Arm 的 Windows PC

基于 Arm 的 Windows 电脑支持 .NET。 以下部分介绍安装 .NET 时应考虑的事项。

路径差异

在基于 Arm 的 Windows 电脑上,所有 Arm64 版本的 .NET 都安装到正常的 C:\Program Files\dotnet\ 文件夹中。 但是,.NET SDK 的 x64 版本安装到 C:\Program Files\dotnet\x64\ 文件夹。

路径变量

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

使用 Visual Studio 安装

Visual Studio 会将自己的 .NET 副本与 .NET 的其他副本分开安装。 不同版本的 Visual Studio 支持不同版本的 .NET。 最新版本的 Visual Studio 始终支持最新版本的 .NET。

Visual Studio 安装程序可安装和配置 Visual Studio。 某些 Visual Studio 工作负载包括 .NET,例如 ASP.NET 和 Web 开发以及 .NET Multi-Platform App UI 开发。 可以通过“单个组件”选项卡来安装特定版本的 .NET。

Visual Studio 文档提供了有关如何执行以下操作的说明:

显示 Visual Studio 安装程序的屏幕截图,其中突出显示了带有红色框的 .NET 桌面工作负载。

.NET 版本和 Visual Studio

如果你要使用 Visual Studio 开发 .NET 应用,请参阅下表,了解不同目标 .NET SDK 版本所需的 Visual Studio 最低版本。

.NET SDK 版本 Visual Studio 版本
9 Visual Studio 2022 版本 17.12 或更高版本。
8 Visual Studio 2022 版本 17.8 或更高版本。
7 Visual Studio 2022 版本 17.4 或更高版本。
6 Visual Studio 2022 版本 17.0 或更高版本。
5 Visual Studio 2019 版本 16.8 或更高版本。
3.1 Visual Studio 2019 版本 16.4 或更高版本。
3.0 Visual Studio 2019 版本 16.3 或更高版本。
2.2 Visual Studio 2017 版本 15.9 或更高版本。
2.1 Visual Studio 2017 版本 15.7 或更高版本。

如果你已安装 Visual Studio,则可以使用以下步骤检查你的版本。

  1. 打开 Visual Studio。
  2. 选择“帮助”>“Microsoft Visual Studio”。
  3. 从“关于”对话框中读取版本号。

有关详细信息,请参阅 .NET SDK、MSBuild 和 Visual Studio 版本控制

使用 Visual Studio Code 安装

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

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

.NET 安装程序

适用于 .NET 的下载页面提供了 Windows Installer 可执行文件。

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

  2. 选择要下载的 .NET 版本,例如 9.0。

  3. 查找包含 .NET 下载链接的 SDK 或运行时框。

  4. 在“安装程序”列下,找到 Windows 行,然后选择 CPU 体系结构的链接。 如果不确定,请选择 x64,因为它是最常用的体系结构。

    浏览器会自动下载安装程序。

    提示

    下图显示了 SDK,但你也可以下载运行时。

    .NET 下载页的图像,其中突出显示了 SDK 下载链接。

  5. 打开 Windows 资源管理器并导航到下载文件的位置,这很可能是 Downloads 文件夹。

  6. 双击该文件以安装 .NET。

    此时会打开“Windows Installer”对话框。

    .NET 安装程序应用窗口的屏幕截图。

  7. 选择“安装”,并按照说明安装 .NET。

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

命令行选项

使用 /? 参数显示选项列表。

如果要静默安装 .NET,如在生产环境中或为了支持持续集成,请使用以下选项:

  • /install
    安装 .NET。

  • /quiet
    禁止显示任何 UI 和提示。

  • /norestart
    禁止任何重启尝试。

dotnet-sdk-9.0.100-win-x64.exe /install /quiet /norestart

提示

该安装程序会返回退出代码 0 表示成功,返回退出代码 3010 表示需要重启。 任何其他值很可能是错误代码。

Microsoft Update

.NET 安装程序可执行文件是可在 Windows 上使用 Microsoft Update (MU) 提供服务的独立产品。 MU 不同于 Windows 更新(WU),它用于服务 .NET Framework 等操作系统组件。

使用多个分发通道通过 MU 提供支持的 .NET 版本的安全和非安全修补程序。 自动更新(AU)与最终用户和使用者相关,而 Window Server Update Services(WSUS)和Windows 更新目录与 IT 管理员相关。

.NET 安装程序可执行文件支持针对不同体系结构和组件(例如运行时和 SDK)跨主要和次要版本的并行(SxS)安装。 例如,可以同时安装 6.0.15 (x64) 和 6.0.17 (x86) 运行时。 当 MU 触发时,它将为这两个安装提供最新的安装程序。

阻止更新

虽然大多数用户更喜欢保持最新状态,但可以使用下表中的注册表项阻止 .NET 更新。

.NET 版本 注册表项 名称 类型
All HKLM\SOFTWARE\Microsoft\.NET BlockMU REG_DWORD 0x00000001
.NET 9 HKLM\SOFTWARE\Microsoft\.NET\9.0 BlockMU REG_DWORD 0x00000001
.NET 8 HKLM\SOFTWARE\Microsoft\.NET\8.0 BlockMU REG_DWORD 0x00000001
.NET 7 HKLM\SOFTWARE\Microsoft\.NET\7.0 BlockMU REG_DWORD 0x00000001
.NET 6 HKLM\SOFTWARE\Microsoft\.NET\6.0 BlockMU REG_DWORD 0x00000001
.NET 5 HKLM\SOFTWARE\Microsoft\.NET\5.0 BlockMU REG_DWORD 0x00000001
.NET Core 3.1 HKLM\SOFTWARE\Microsoft\.NET\3.1 BlockMU REG_DWORD 0x00000001
.NET Core 2.1 HKLM\SOFTWARE\Microsoft\.NET\2.1 BlockMU REG_DWORD 0x00000001

服务器 OS 的自动更新

WSUS 和 Microsoft 更新目录支持服务器操作系统的更新,但不支持 AU。 服务器操作系统可以选择使用以下注册表项通过 AU 接收更新。

.NET 版本 注册表项 名称 类型
All HKLM\SOFTWARE\Microsoft\.NET AllowAUOnServerOS REG_DWORD 0x00000001
.NET 9 HKLM\SOFTWARE\Microsoft\.NET\9.0 AllowAUOnServerOS REG_DWORD 0x00000001
.NET 8 HKLM\SOFTWARE\Microsoft\.NET\8.0 AllowAUOnServerOS REG_DWORD 0x00000001
.NET 7 HKLM\SOFTWARE\Microsoft\.NET\7.0 AllowAUOnServerOS REG_DWORD 0x00000001
.NET 6 HKLM\SOFTWARE\Microsoft\.NET\6.0 AllowAUOnServerOS REG_DWORD 0x00000001
.NET 5 HKLM\SOFTWARE\Microsoft\.NET\5.0 AllowAUOnServerOS REG_DWORD 0x00000001
.NET Core 3.1 HKLM\SOFTWARE\Microsoft\.NET\3.1 AllowAUOnServerOS REG_DWORD 0x00000001

选择删除以前版本时

安装程序可执行文件始终安装新内容,然后再删除以前的安装。 删除较旧的运行时时,正在运行的应用程序可能会中断或崩溃。 若要最大程度地减少更新 .NET 的影响,可以使用注册表项指定何时应删除以前的 .NET 安装。

.NET 版本 注册表项 名称 类型
All HKLM\SOFTWARE\Microsoft\.NET RemovePreviousVersion REG_SZ alwaysnevernextSession
.NET 9 HKLM\SOFTWARE\Microsoft\.NET\9.0 RemovePreviousVersion REG_SZ alwaysnevernextSession
.NET 8 HKLM\SOFTWARE\Microsoft\.NET\8.0 RemovePreviousVersion REG_SZ alwaysnevernextSession
  • never 保留以前的安装,需要手动干预才能删除以前的 .NET 安装。
  • always 在安装新版本后删除以前的安装。 这是 .NET 中的默认行为。
  • nextSession 将删除延迟到管理员组中成员的下一个登录会话。
  • 值不区分大小写且默认值无效 always

删除延迟后,安装程序会将命令 写入 RunOnce 注册表项以卸载以前的版本。 仅当管理员组中的用户登录到计算机时,该命令才会执行。

注意

此功能仅在 .NET 8(8.0.11)、9 及更高版本的 .NET 中可用。 它仅适用于独立安装程序可执行文件,并影响使用它们的 WinGet 等分发版。

使用 Windows 程序包管理器 (WinGet) 进行安装

可以通过 Windows 程序包管理器服务使用 winget.exe 工具来安装和管理 .NET。 有关如何安装和使用 WinGet 的详细信息,请参阅使用 winget 工具安装和管理应用程序

如果要安装系统范围的 .NET,请使用管理权限进行安装。

.NET WinGet 包包括:

  • Microsoft.DotNet.Runtime.9— .NET Runtime 9.0
  • Microsoft.DotNet.AspNetCore.9— ASP.NET Core Runtime 9.0
  • Microsoft.DotNet.DesktopRuntime.9- .NET Desktop Runtime 9.0
  • Microsoft.DotNet.SDK.9-.NET SDK 9.0
  • Microsoft.DotNet.Runtime.8-.NET Runtime 8.0
  • Microsoft.DotNet.AspNetCore.8—ASP.NET Core Runtime 8.0
  • Microsoft.DotNet.DesktopRuntime.8—.NET Desktop Runtime 8.0
  • Microsoft.DotNet.SDK.8—.NET SDK 8.0

安装 SDK

如果安装 SDK,则无需安装相应的运行时。

  1. 安装 WinGet

  2. 打开终端,例如 PowerShell 或命令提示符。

  3. 运行 winget install 命令并传递 SDK 包的名称:

    winget install Microsoft.DotNet.SDK.9
    

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

安装运行时

可以安装不同的运行时。 请参阅选择正确的运行时一节,了解每个运行时包含的内容。

  1. 安装 WinGet

  2. 打开终端,例如 PowerShell命令提示符

  3. 运行 winget install 命令并传递 SDK 包的名称:

    winget install Microsoft.DotNet.DesktopRuntime.9
    winget install Microsoft.DotNet.AspNetCore.9
    

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

搜索版本

使用 winget search 命令搜索要安装的包的不同版本。 例如,以下命令将搜索通过 WinGet 提供的所有 .NET SDK:

winget search Microsoft.DotNet.SDK

搜索结果将打印在包含每个包标识符的表中。

Name                           Id                           Version                    Source
----------------------------------------------------------------------------------------------
Microsoft .NET SDK 9.0         Microsoft.DotNet.SDK.9       9.0.100                    winget
Microsoft .NET SDK 8.0         Microsoft.DotNet.SDK.8       8.0.300                    winget
Microsoft .NET SDK 7.0         Microsoft.DotNet.SDK.7       7.0.409                    winget
Microsoft .NET SDK 6.0         Microsoft.DotNet.SDK.6       6.0.422                    winget
Microsoft .NET SDK 5.0         Microsoft.DotNet.SDK.5       5.0.408                    winget
Microsoft .NET SDK 3.1         Microsoft.DotNet.SDK.3_1     3.1.426                    winget

安装预览版本

如果预览版可用,请将 ID 中的版本号替换为单词Preview。 以下示例安装了 .NET 桌面运行时的预览版本:

winget install Microsoft.DotNet.DesktopRuntime.Preview

使用 PowerShell 安装

对于持续集成和非管理员安装,建议通过 dotnet-install PowerShell 脚本安装 .NET。 如果要在系统上安装 .NET 以便正常使用,请使用 .NET 安装程序Windows 程序包管理器安装方法。

此脚本默认安装最新的长期支持 (LTS) 版本,即 .NET 8。 可通过指定 -Channel 开关以选择特定版本。 包括 -Runtime 开关以安装运行时。 否则,该脚本安装 SDK。 该脚本可在 https://dot.net/v1/dotnet-install.ps1 上获取,并且源代码托管在 GitHub 上。

有关该脚本的详细信息,请参阅 dotnet-install 脚本参考

安装运行时

通过提供 -Runtime 开关来安装 .NET Runtime。

  1. https://dot.net/v1/dotnet-install.ps1 下载安装脚本

  2. 打开 PowerShell 并导航到包含该脚本的文件夹。

  3. 运行以下命令会同时安装 Desktop Runtime 和 ASP.NET Core Runtime,以实现最大兼容性:

    dotnet-install.ps1 -Runtime windowsdesktop
    dotnet-install.ps1 -Runtime aspnetcore
    

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

安装 SDK

如果安装 SDK,则无需安装运行时。

  1. https://dot.net/v1/dotnet-install.ps1 下载安装脚本

  2. 打开 PowerShell 并导航到包含该脚本的文件夹。

  3. 运行以下命令以安装 .NET SDK。

    dotnet-install.ps1
    

    注意

    可通过省略 -Runtime 开关来安装 SDK。

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

验证

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

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

具有校验和的 .NET 下载页

可以使用PowerShell命令提示符验证已下载文件的校验和。 例如,以下命令会报告 dotnet-sdk-8.0.100-win-x64.exe 文件的校验和

> certutil -hashfile dotnet-sdk-8.0.100-win-x64.exe SHA512
SHA512 hash of dotnet-sdk-8.0.100-win-x64.exe:
248acec95b381e5302255310fb9396267fd74a4a2dc2c3a5989031969cb31f8270cbd14bda1bc0352ac90f8138bddad1a58e4af1e56cc4a1613b1cf2854b518e
CertUtil: -hashfile command completed successfully.
> (Get-FileHash .\dotnet-sdk-8.0.100-win-x64.exe -Algorithm SHA512).Hash
248acec95b381e5302255310fb9396267fd74a4a2dc2c3a5989031969cb31f8270cbd14bda1bc0352ac90f8138bddad1a58e4af1e56cc4a1613b1cf2854b518e

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

使用 PowerShell 和校验和文件进行验证

.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 版本中。

    提示

    如果不确定哪个 .NET 版本包含校验和文件,请浏览链接,直到找到它。

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

    具有 .NET 校验和的下载表

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

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

    Invoke-WebRequest https://dotnetcli.blob.core.windows.net/dotnet/checksums/8.0.0-sha.txt -OutFile 8.0.0-sha.txt
    
  6. 将校验和文件和 .NET 发行文件下载到同一目录后,在校验和文件中搜索 .NET 下载的校验和:

    验证通过时,会看到打印为True

    > (Get-Content .\8.0.0-sha.txt | Select-String "dotnet-sdk-8.0.100-win-x64.exe").Line -like (Get-FileHash .\dotnet-sdk-8.0.100-win-x64.exe -Algorithm SHA512).Hash + "*"
    True
    

    如果看到打印为False,则表示下载的文件无效,不应使用。

故障排除

安装 .NET SDK 后,尝试运行 .NET CLI 命令时可能会遇到问题。 本部分收集这些常见问题并提供解决方案。

找不到 .NET SDK

很可能同时安装了 .NET SDK 的 x86(32 位)和 x64(64 位)版本。 这会导致冲突,因为在运行 dotnet 命令时,它会解析为 x86 版本,但此时它应解析为 x64 版本。 可通过调整 %PATH% 变量以首先解析 x64 版本来解决这一问题。

  1. 通过运行 where.exe dotnet 命令验证是否同时安装了这两个版本。 如果执行此操作,应会看到 Program Files\ 和 Program Files (x86)\ 文件夹的条目。 如果首先显示 Program Files (x86)\ 文件夹,如下例所示,则不正确,应继续执行下一步骤

    > where.exe dotnet
    C:\Program Files (x86)\dotnet\dotnet.exe
    C:\Program Files\dotnet\dotnet.exe
    

    如果是正确的且首先显示 Program Files\,则没有本部分讨论的问题,你应在 GitHub 上创建 .NET 帮助请求问题

  2. 按 Windows 按钮,键入“编辑系统环境变量”进行搜索。 选择“编辑系统环境变量”。

    带有编辑环境变量的 Windows“开始”菜单

  3. “系统属性”窗口将打开到“高级选项卡”。选择“环境变量”。

    Windows“系统属性”窗格打开。

  4. 在“环境变量”窗口的“系统变量”组下,选择 Path* 行,然后选择“编辑”按钮。

    带有用户和系统变量的“环境变量”窗口

  5. 使用“上移”和“下移”按钮将“C:\Program Files\dotnet\”条目移到“C:\Program Files (x86)\dotnet\”上方。

    系统环境变量列表。

生成应用的速度低于预期

确保“智能应用控制”(一项 Windows 功能)处于关闭状态。 不建议在用于开发的计算机上启用“智能应用控制”。 “关”以外的任何设置都可能会对 SDK 性能产生负面影响。

hostfxr.dll / api-ms-win-crt-runtime-l1-1-0.dll / api-ms-win-cor-timezone-l1-1-0.dll 缺失

安装 Microsoft Visual C++ 2015-2019 可再发行程序包(64 位32 位)。