在 Windows 上安装 .NET

本文介绍如何在 Windows 上安装 .NET。 .NET 由运行时和 SDK 组成。 运行时用于运行 .NET 应用,并且可能包含在应用中。 SDK 用于创建 .NET 应用和库。 .NET 运行时始终随 SDK 一起安装。

最新版本的 .NET 是 8.0。

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

下表列出了每个版本的 .NET(和 .NET Core)的支持状态:

✔️ 受支持 ❌ 不受支持
8 (LTS) 5
7 (STS) 3.1
6 (LTS) 3.0
2.1
2.0
1.1
1.0

使用 Windows 包管理器 (winget) 进行安装

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

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

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

winget install Microsoft.DotNet.SDK.8

安装运行时

可以安装三种不同的 .NET 运行时,但是,你应同时安装 .NET 桌面运行时和 ASP.NET Core 运行时,以便与所有类型的 .NET 应用实现最大兼容性。 下表描述了每个运行时包含的内容:

包含 .NET 运行时 包含 .NET 桌面运行时 包含 ASP.NET Core 运行时
.NET 运行时
.NET 桌面运行时
ASP.NET Core 运行时 No

以下列表提供了有关每个运行时以及用于安装它们的 winget 命令的详细信息:

  • .NET 桌面运行时

    此运行时支持使用 .NET 构建的 Windows Presentation Foundation (WPF) 和 Windows 窗体应用。 这与 Windows 附带的 .NET Framework 不同。 此运行时包含 .NET 运行时,但不包含 ASP.NET Core 运行时,它必须单独安装。

    winget install Microsoft.DotNet.DesktopRuntime.8
    
  • .NET 运行时

    这是基本运行时,仅包含运行控制台应用所需的组件。 通常,你需要同时安装 .NET 桌面运行时和 ASP.NET Core 运行时,而不是安装此运行时。

    winget install Microsoft.DotNet.Runtime.8
    
  • ASP.NET Core 运行时

    此运行时会运行 Web 服务器应用,并提供许多与 Web 相关的 API。 ASP.NET Core 运行时让你可以运行使用未提供该运行时的 .NET 开发的应用。 除了此运行时之外,还必须安装 .NET 运行时。 以下命令会安装 ASP.NET Core 运行时,请在终端中运行以下命令:

    winget install Microsoft.DotNet.AspNetCore.8
    

可以通过用单词 Preview 替换版本号(如 6)来安装运行时的预览版本。 以下示例安装了 .NET 桌面运行时的预览版本:

winget install Microsoft.DotNet.DesktopRuntime.Preview

随 Visual Studio Code 一起安装

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

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

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

C# For Visual Studio Code 扩展包含最新的 .NET SDK,无需单独安装任何 .NET 运行时。

使用 Windows Installer 进行安装

可以安装三种不同的 .NET 运行时,但是,你应同时安装 .NET 桌面运行时和 ASP.NET Core 运行时,以便与所有类型的 .NET 应用实现最大兼容性。 下表描述了每个运行时包含的内容:

包含 .NET 运行时 包含 .NET 桌面运行时 包含 ASP.NET Core 运行时
.NET 运行时
.NET 桌面运行时
ASP.NET Core 运行时 No

.NET SDK 让你可以创建 .NET 应用,并包含所有运行时。

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

如果要以无提示方式安装 .NET(例如在生产环境中)或要支持持续集成,请使用以下开关:

  • /install
    安装 .NET。

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

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

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

有关详细信息,请参阅标准安装程序命令行选项

提示

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

使用 PowerShell 自动化安装

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

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

以下命令会同时安装桌面和 ASP.NET Core 运行时,以实现最大兼容性。

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

通过省略 -Runtime 开关来安装 SDK。 在此示例中,-Channel 开关设置为 STS,这会安装最新的标准期限支持版本,即 .NET 7。

dotnet-install.ps1 -Channel STS

使用 Visual Studio 安装

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

.NET SDK 版本 Visual Studio 版本
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. 从“关于”对话框中读取版本号。

Visual Studio 可安装最新的 .NET SDK 和运行时。

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

选择工作负载

安装或修改 Visual Studio 时,根据要生成的应用程序的类型,选择以下一个或多个工作负载:

  • “其他工具集”部分中的“.NET Core 跨平台开发”工作负荷 。
  • “Web 和云”部分中的“ASP.NET 和 Web 开发”工作负荷
  • “Web 和云”部分中的“Azure 开发”工作负载
  • “桌面和移动”部分中的“NET 桌面开发”工作负载

Windows Visual Studio 2019 with .NET Core workload

支持的版本

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

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

提示

+ 表示最低版本。

操作系统 .NET 8 .NET 7 .NET 6
Windows 11
Windows Server 2022
Windows Server 版本 1903 或更高版本
Windows 10 版本 1607 或更高版本
Windows 8.1
Windows 7 SP1 ESU
Windows Server 2019
Windows Server 2016
Windows Server 2012 R2
Windows Server 2012
Windows Server Core 2012 R2
Windows Server Core 2012
Nano Server 版本 1809+
Nano Server 版本 1803

有关 .NET 8 支持的操作系统、发行版和生命周期策略的详细信息,请参阅 .NET 8 支持的 OS 版本

不支持的版本

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

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

验证下载的二进制文件

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

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

The .NET download page with checksum

可以使用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 版本的下载和校验和文件:

    The github release notes version table for .NET

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

    提示

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

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

    The download table with checksums for .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 创建的应用。 应用作者发布应用时,可以在其应用中包含运行时。 如果作者未包含运行时,则由用户安装运行时。

可以安装三种不同的 .NET 运行时,但是,你应同时安装 .NET 桌面运行时和 ASP.NET Core 运行时,以便与所有类型的 .NET 应用实现最大兼容性。 下表描述了每个运行时包含的内容:

包含 .NET 运行时 包含 .NET 桌面运行时 包含 ASP.NET Core 运行时
.NET 运行时
.NET 桌面运行时
ASP.NET Core 运行时 No

以下列表提供了有关每个运行时的详细信息:

  • 桌面运行时
    运行适用于 Windows 的 .NET WPF 和 Windows 窗体桌面应用。 包括 .NET 运行时。

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

  • .NET 运行时
    此运行时是最简单的运行时,不包括任何其他运行时。 安装 ASP.NET Core 运行时桌面运行时,以便与 .NET 应用实现最佳兼容性。

SDK 信息

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

基于 Arm 的 Windows PC

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

支持的操作

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

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

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

路径差异

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

路径冲突

x64 .NET SDK 安装到其自己的目录中,如上一节所述。 这使得 Arm64 和 x64 版本的 .NET SDK 可以在同一台机器上存在。 但是,低于 6 版的任何x64 SDK 都不受支持,并且它们安装在与 Arm64 版本相同的位置,即C:\Program Files\dotnet\文件夹。 如果要安装不受支持的 x64 SDK,则必须先卸载 Arm64 版本。 反过来也是如此,如果要安装 Arm64 版本,必须先卸载不受支持的 x64 SDK。

路径变量

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

依赖项

.NET 8 支持下列 Windows 版本:

注意

+ 表示最低版本。

(OS) Version 体系结构
Windows 11 22000+ x64、x86、Arm64
Windows 10 客户端 1607+ x64、x86、Arm64
Windows Server 2012+ x64、x86
Windows Server 核心 2012+ x64、x86
Nano Server 1809+ X64

有关 .NET 8 支持的操作系统、发行版和生命周期策略的详细信息,请参阅 .NET 8 支持的 OS 版本

Windows 7/8.1/Server 2012

如果要在以下 Windows 版本上安装 .NET SDK 或运行时,则需要其他依赖项:

操作系统 先决条件
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

Docker

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

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

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

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

疑难解答

安装 .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 start menu with edit environment variable

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

    The Windows system properties panel open.

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

    The environment variables window with user and system variables.

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

    The environment variables list for the system.

后续步骤