基于 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 应用。
Arm 开发人员工具
Microsoft 正致力于提供 Arm 本机开发人员工具集,其中包括 Arm 本机 Visual Studio 2022、VSCode、VC++ 工具链、经典 .NET Framework、新式 .NET 和 Java。 Microsoft 还与多个第三方和开源社区合作,以移植通用工具、运行时、框架和库,使其以本机方式面向基于 Arm 的 Windows。 请参阅 Build 2022 的公告,了解这套全面的工具、服务和设备,它们使开发人员能够像面向 x64 一样轻松地生成和移植本机面向 Arm 的应用程序。
虚拟机
在 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 开发人员设备
开发人员需要 Arm 设备来生成和测试 Arm 本机 Windows 应用。 Microsoft 合作伙伴已经提供了多种由 Arm 提供支持的设备。 这些便携设备(无论是笔记本电脑还是可转换平板电脑)提供出色的性能和电池使用时间,并运行越来越多的 Arm 本机开发人员工具。
Windows 开发工具包 2023(代号“Project Volterra”)是最新的 Arm 设备,旨在为 Windows 开发人员、AI 研究人员以及希望将 AI 集成到其应用和体验中的开发人员提供支持。
Arm64EC - 生成适用于基于 Arm 的 Windows 11 的应用
Arm64EC(“仿真兼容”)使你能够逐步生成新应用或移植现有应用,以尽可能利用本机 Arm 性能,同时在实现完全迁移前利用现有的 x64 代码和库。 了解详细信息:
在 Arm 上支持现有的 Windows 应用
基于 Arm 的 Windows 可运行本机 Arm 应用以及许多未经修改的 x86 和 x64 应用,但为了实现最佳性能和电池使用时间,应尽可能将应用生成为 Arm 本机应用。 Windows 应用可以使用许多不同的工具和技术来生成,包括本机 C/C++ Win32 应用、经典 .NET Framework WinForms/WPF 应用、新式 .NET 或 MAUI 应用,甚至是使用 Java、Python、Node 等生成的应用。
查找 Arm 开发工具
Windows 提供各种工具和框架来支持在 Arm 上开发面向 Arm 的应用。
- 新版 Arm 本机 Visual Studio 包括 Visual C++、.NET 和 .NET Framework 以及 Java,使开发人员能够在基于 Arm 的设备上本机生成和调试 Arm 应用。 有关详细信息,请参阅博客公告。
- 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 7 Arm64 SDK。 有关 NET 7 对 Arm 的支持以及 Arm64 的性能改进,请参阅 .NET 博客。
- .NET 6 Arm64 SDK:默认情况下,如果使用 Arm64 SDK
dotnet run
.NET 6 应用,它将作为 Arm64 运行。dotnet-runtimeinfo
工具可用于发现运行 .NET 的环境。 请参阅有关 Arm64 支持的 .NET 6 博客公告了解详细信息。
注意
我们使用术语 Arm 作为在 Arm64(通常也称为 AArch64)处理器上运行 Windows 桌面版的电脑的简写。 使用术语 Arm32(在其他文档中通常称为 Arm)作为 32 位 Arm 体系结构的简写。 由 Arm 提供支持的电脑还提供出色的应用程序兼容性,支持运行未经修改的现有 x86 win32 应用程序。 Arm 应用可无需任何仿真以本机方式运行,而 x86 和 x64 应用则通过仿真在 Arm 设备上运行。
有关开发在 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
外部资源
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈