Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This guide covers the recommended steps for changing an existing app with support for 32-bit Arm platform architecture to the more updated 64-bit Arm architecture by adding the necessary configuration using Visual Studio. This update helps your app run on the latest Windows on Arm devices that use 64-bit Arm (Arm64/AArch64) processors.
This topic is relevant for UWP apps that don't have an Arm64 target. Older UWP project templates generated an Arm32 (or AArch32) target but didn't include support for Arm64 (AArch64).
To check the current Solution Platform for your app to see if Arm64 is present, open your app project code in Visual Studio. In the "Solution Platforms" drop-down menu on the Standard toolbar, select Configuration Manager... (also available in the Build menu) where you can view the list of Solution Platforms and confirm whether Arm64 is present.
Note
Windows devices running on an Arm processor (for example, Snapdragon processors from Qualcomm) no longer support AArch32 (Arm32). This change impacts Universal Windows Platform apps that presently target AArch32 (Arm32). Support for 32-bit Arm versions of applications is removed in a future release of Windows 11.. System binaries for Arm32 support (present in the sysarm32 folder) are also removed. After this change, for the small number of applications affected, app features might be different and you might notice a difference in performance. Therefore, update your targeted platforms to AArch64 (Arm64), which is supported on all Windows on Arm devices, as soon as possible in order to ensure your customers can continue to enjoy the best possible experience. Follow the guidance on this page to update your applications to AArch64 (Arm64).
Add an Arm64 configuration to your project
To add an Arm64 solution platform to your existing app project code:
- Open your solution (project code) in Visual Studio (Visual Studio 2017 version 15.9 or newer is required).
- In the "Solution Platforms" drop-down menu on the Standard toolbar (or in the "Build" menu), select Configuration Manager...
- Open the "Active solution platform" drop-down menu and select <new...>.
- In the "Type or select the new platform" drop-down menu, select Arm64 and ensure that the "Copy settings from" value is set to ARM with the "Create new project platforms" checkbox enabled, then select OK.
Build your Arm64 Solution
After you add the Arm64 solution platform to your existing project or solution, if you want to confirm that the Arm64 version of your app builds correctly, close the "Active solution platform" window and change the build setting from Debug to Release. In the "Build" drop-down menu, select Rebuild Solution and wait for the project to rebuild. You should receive a "Rebuild All succeeded" output. If not, see the Troubleshooting section.
(Optional): Check that your app binary is now built for Arm64 architecture by opening your project directory in PowerShell (right-click your app project in Visual Studio Solution Explorer and select Open in Terminal). Change directories so that your project's new bin\ARM64\Release directory is selected. Enter the command: dumpbin .\<appname>.exe (replacing <appname> with the name of your app). Then enter the command: dumpbin /headers .\<appname>.exe. Scrolling up in your terminal's output results, find the FILE HEADER VALUES section and confirm the first line is AA64 machine (ARM64).
Publish your updated app in the Microsoft Store
After you build an Arm64 version of your app by following the configuration steps in the previous section, you can update your existing app package in the Microsoft Store. Visit your Partner Center dashboard and add the newly built ARM64 binaries to the submission. You can also remove the previous ARM32 binaries if you want.
For more information on publishing options, see Publish your app in the Microsoft Store.
Troubleshooting
If you run into issues while porting your Arm32 app to Arm64, here are a few common solutions.
A dependency not compiled for ARM64 is blocking you from a successful build
If you can’t build due to a dependency, whether internal, from a third party, or from an open-source library, you need to either update that dependency to support ARM64 architecture or remove it.
For internal dependencies, rebuild the dependency for ARM64 support.
For third-party dependencies, file a request for the maintainer to rebuild with ARM64 support.
For open source dependencies, check vcpkg to see if a newer version of the dependency includes ARM64 support that you can update to. If no update exists, consider contributing the addition of ARM64 support to the package yourself. Many open source maintainers would be thankful for the contribution.
Remove and replace the dependency on your app project.
Need assistance? Leverage our App Assure service
Learn more about App Assure compatibility assistance to help with porting your Windows app or driver to Arm64. To register and connect with App Assure, visit aka.ms/AppAssureRequest.
Windows on Arm