基于 ARM 的 Windows
Windows 传统上在由 x86/x64 处理器提供支持的计算机上运行,但最近也在由 Arm 处理器提供支持的设备上运行。
由 Arm 提供支持的设备特别有吸引力,因为 Arm 体系结构的节能特性使这些设备能够在提供更长电池使用时间的同时提供出色的性能。 Arm 片上系统 (SoC) 通常包含其他关键功能,例如强大的 CPU、GPU、Wi-Fi 和移动数据网络,以及用于加速 AI 工作负载的神经网络处理器单元 (NPU)。
生成在 Arm 上运行的 Windows 应用
Windows 10 支持在 Arm 设备上运行未经修改的现有 x86 应用。 Windows 11 添加了在 Arm 设备上运行未经修改的 x64 Windows 应用的功能! 这种在 Arm 设备上运行 x86 和 x64 应用的功能让最终用户相信,他们的大多数现有应用和工具即使在由 Arm 提供支持的新设备上也能正常运行。
为了获得最佳性能、响应能力和电池使用时间,用户想要并且需要 Arm 本机 Windows 应用,这意味着开发人员需要生成或移植 Arm 本机 Windows 应用。
虚拟机
可以在 Azure 上使用基于 Ampere Altra Arm 的处理器创建和部署 Windows 11 Arm64 VM。 请在这篇快速入门文章中了解操作方法。
详细了解如何使用基于 ARM 的 Windows 虚拟机
- 基于 ARM 的 Windows 虚拟机常见问题解答
- 正式发布采用基于 Ampere Altra Arm 的处理器的 Azure 虚拟机
- 使用 Terraform 部署基于 Arm 的 Azure Kubernetes 服务 (AKS) 群集 - ARM 开发人员中心
- 详细了解如何通过在云端托管的持续集成/持续部署 (CI/CD)(例如 Azure DevOps 或 GitHub)构建和测试自动化。
Arm 开发人员设备
想要在 Windows 上生成和测试 Arm 本机应用的开发人员可用的选项数量不断增加。
Copilot+ 电脑 通过各种设备制造商提供神经处理单元(NPU)和最新的 AI 功能和计算能力。 其中许多由基于 Arm 的 Snapdragon® X 系列处理器提供支持,每秒提供 45 万亿次操作(TOPS)。使用。
Windows 开发工具包 2023 (代码名称“Project Volterra”)不再可用于购买新设备,但作为一种基于 Arm 的设备仍可行,用于支持 Windows 开发、AI 研究和测试,以便将 AI 集成到应用和体验中。
在 Arm 上支持现有的 Windows 应用
基于 Arm 的 Windows 可运行本机 Arm 应用以及许多未经修改的 x86 和 x64 应用,但为了实现最佳性能和电池使用时间,应尽可能将应用生成为 Arm 本机应用。 Windows 应用可以使用许多不同的工具和技术来生成,包括本机 C/C++ Win32 应用、经典 .NET Framework WinForms/WPF 应用、新式 .NET 或 MAUI 应用,甚至是使用 Java、Python、Node 等生成的应用。
查找 Arm 开发工具
Microsoft 不断发布 ARM 原生开发人员工具集更新,以生成和移植以本机面向 Windows ARM 的设备的应用,就像面向 x64 时一样简单。 在 Arm 上支持面向 Arm 的应用开发。
- Arm 原生 Visual Studio 包括 Visual C++、.NET 和 .NET Framework 和 Java,使开发人员能够在基于 Arm 的设备上本机生成和调试 Arm 应用。 了解详细信息:Arm64 Visual Studio 正式发布!(2022 年 11 月)、Visual Studio 2022 17.7 中的 MSVC ARM64 优化(2023 年 9 月)。
- Visual Studio Code 本机支持 Arm,并且可以安装在 Arm 设备上。 VS Code C++ 扩展还提供 C++ IntelliSense 和生成支持,用于开发在 Arm64 设备上本机运行的 Windows 应用程序。
- .NET 6+ 已支持 Arm,适用于本机 Arm 执行和 x64 仿真。 要开发在 Arm64 设备上本机运行的 .NET 应用,建议安装新的 Arm 本机 Visual Studio 2022 17.4 和 .NET 8 Arm64 SDK。 若要详细了解面向 Arm 的 .NET 8 支持和面向 Arm64 的性能改进,请访问 .NET 博客: .NET 8 中的 Arm64 性能改进(2023 年 10 月)。
- .NET 6 Arm64 SDK:默认情况下,如果使用 Arm64 SDK
dotnet run
.NET 6 应用,它将作为 Arm64 运行。dotnet-runtimeinfo
工具可用于发现运行 .NET 的环境。 请参阅有关 Arm64 支持的 .NET 6 博客公告了解详细信息。 - VC++ 工具链(Arm 开发人员)是 Arm 生成的 Arm 体系结构版本的 GNU 工具链,使合作伙伴、开发人员和社区能够使用最新 Arm 体系结构中的新功能,以及来自开源项目 GCC、Binutils、glibc、Newlib 和 GDB 的新功能。
- OpenJDK 中面向 Arm 的 Java 支持:宣布在 ARM 上为 Windows 提供 OpenJDK(2020 年 6 月)
- GitHub Actions:GitHub Actions、GitHub 的 CI/CD 工作流引擎是许多开发人员工作流不可或缺的一部分,这些人员使用该工具来持续生成、测试和部署应用。 GitHub Actions 现在可用于基于 Arm 的 Windows,有两种版本:1. 自托管运行器,可在 Arm VM 或 Arm 设备上托管,以及 2. GitHub 托管的运行程序(目前发布了专用 beta 版,但正式版本即将发布)。
- Docker Desktop:容器是一个非常受欢迎的部署目标,原因有很多:简化开发工作流、隔离和安全性、资源利用率高、可移植性和可再现性。 Docker 桌面现在以本机方式在基于 Arm 的 Windows 上运行。
注意
我们使用术语 Arm 作为在 Arm64(通常也称为 AArch64)处理器上运行 Windows 桌面版的电脑的简写。 使用术语 Arm32(在其他文档中通常称为 Arm)作为 32 位 Arm 体系结构的简写。 由 Arm 提供支持的电脑还提供出色的应用程序兼容性,支持运行未经修改的现有 x86 win32 应用程序。 Arm 应用可无需任何仿真以本机方式运行,而 x86 和 x64 应用则通过仿真在 Arm 设备上运行。
Arm64EC - 有关更新在 Arm 上运行的 Windows 应用的帮助
Arm64EC(“仿真兼容”)使你能够逐步生成新应用或移植现有应用,以尽可能利用本机 Arm 性能,同时在实现完全迁移前利用现有的 x64 代码和库。 了解详细信息:
有关开发在 Arm 设备上运行的 Windows 应用的其他技巧
建议使用 MSIX 打包应用以供分发。 有关 MSIX 如何支持 Arm 和 Arm64 的详细信息,请参阅应用包体系结构:Arm 和 Arm64。
并非所有 Visual Studio 项目都配置为从 Arm 设备开始调试 (F5) 时在本地启动项目。 即使你的应用在本地运行,也可能需要配置 Visual Studio 以进行远程调试。 有关详细信息,请参阅远程调试。
要在 Visual Studio 上查找并安装推荐的包,请访问 Visual Studio 下载页面。
- 对于 Visual Studio 2022 远程工具,请滚动到“所有下载”部分下方,然后展开“Visual Studio 2022 工具”下拉菜单。 其中会列出“Visual Studio 2022 远程工具”。 请务必选中“Arm64”单选按钮,然后选中“下载”。
- 对于 Microsoft Visual C++ 可再发行程序包,请滚动到“所有下载”部分下方,然后展开“其他工具和框架”下拉菜单。 其中会列出“Microsoft Visual C++ Redistributable for Visual Studio 2022”。 请务必选中“Arm64”单选按钮,然后选中“下载”。
- 如果使用的是旧版本的 Visual Studio,请选择页面底部的旧版下载链接,搜索与该 Visual Studio 版本关联的下载。
当用户在 Arm 设备上从 Microsoft Store 安装你的应用时,Windows 11 会自动选择可用的最佳应用版本。 如果你将应用的 x86、Arm32 和 Arm64 版本提交到 Microsoft Store,操作系统会自动安装应用的 Arm64 版本。 如果只提交应用的 x86 和 Arm32 版本,操作系统会安装 Arm32 版本。 如果只提交应用的 x86 版本,操作系统会安装该版本并在仿真下运行它。
在选择应用体系结构时,请选择 32 位 x86 版本,以在基于 Arm 的 Windows 电脑上运行应用的 32 位版本。 如果应用的 x64 Win32 版本无法运行,大多数应用都有 x86 版本可用。
有关体系结构的详细信息,请参阅应用包体系结构。
应用保证 Arm 咨询服务
为你的 Windows 应用添加 Arm 支持指南详细介绍了如何创建应用的 Arm 优化版本。 如果遇到问题,应用保证 Arm 咨询服务可以提供帮助。 这项服务是对我们现有承诺的补充:你的应用将在基于 Arm 的 Windows 上运行,如果遇到任何问题,Microsoft 将帮助你修正它们。 了解详细信息。
其他资源
- Satya Nadella 在 Build 2022 主题演讲中宣布推出“Project Volterra”
- x86 仿真在 Arm 上的工作原理
- 排查 x86 桌面应用问题
- 排查 ARM UWP 应用问题
- Arm 上的程序兼容性疑难解答
- 使用 WDK 生成 Arm64 驱动程序:生成 Arm64 驱动程序的说明。
- 在 Arm 上调试 x86 应用 | 在 Arm 上调试 x86 应用的指南。
- 视频:生成 Arm64 Win32 C++ 应用
- 面向开发人员的基于 Arm 的 Windows 10(Microsoft Build 2018 视频演示)
- 博客:Windows 10 支持 Arm 开发的原始公告
- 报告 bug