{"id":250623,"date":"2024-09-17T03:00:19","date_gmt":"2024-09-17T10:00:19","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=250623"},"modified":"2025-08-22T07:40:46","modified_gmt":"2025-08-22T14:40:46","slug":"how-to-run-net-apps-natively-on-arm64-devices","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/how-to-run-net-apps-natively-on-arm64-devices\/","title":{"rendered":"How to run .NET Framework apps natively on Arm64 devices"},"content":{"rendered":"<p>Are you developing .NET Framework applications for Arm-based processors? Do you want to take advantage of the performance and power efficiency of running your apps natively on Arm64 devices? If so, you&#8217;ll be happy to hear that Visual Studio 2022 17.11 has a new feature that makes it easier than ever to do just that.<\/p>\n<p><img decoding=\"async\" width=\"2048\" height=\"1152\" class=\"wp-image-250626\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/mobile-device-with-apps.jpeg\" alt=\"Mobile device with apps\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/mobile-device-with-apps.jpeg 2048w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/mobile-device-with-apps-300x169.jpeg 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/mobile-device-with-apps-1024x576.jpeg 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/mobile-device-with-apps-768x432.jpeg 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/mobile-device-with-apps-1536x864.jpeg 1536w\" sizes=\"(max-width: 2048px) 100vw, 2048px\" \/><\/p>\n<p>Visual Studio 2022 natively supports building and debugging Arm64 apps on Arm-based processors. However, if you build your app with the AnyCPU setting, which is the default for most .NET Framework projects, your app will run on an Arm64 device using x64 emulation. While this may seem counterintuitive, this approach allowed many .NET Framework apps with x64 dependencies to work reliably under emulation without requiring additional build or dependency changes.<\/p>\n<p>Unfortunately, under these conditions, it means your app won&#8217;t <a id=\"post-250623-_Int_wAHePYTa\"><\/a>benefit from the native capabilities of the Arm64 <a id=\"post-250623-_Int_redMfIye\"><\/a>CPU and may suffer from reduced performance and increased battery consumption.<\/p>\n<p>To solve this problem, the <a href=\"https:\/\/blogs.windows.com\/windows-insider\/2024\/05\/22\/releasing-windows-11-version-24h2-to-the-release-preview-channel\/\">Windows 24H2 update<\/a> introduces a new setting for your app manifest files. This setting allows you to specify a list of supported architectures (currently amd64 or arm64) for your app, indicating that it should run natively on those platforms. For example, if you include arm64 in the list, your app will run using the Arm64 <a id=\"post-250623-_Int_LdMmVGZg\"><\/a>CLR on Arm64 devices when supported, even if it was built with the AnyCPU setting.<\/p>\n<h2>How to use the setting in Visual Studio 2022<\/h2>\n<p>To use the new setting in Visual Studio 2022, you need to do the following steps:<\/p>\n<ol>\n<li>Make sure you have the <a href=\"https:\/\/blogs.windows.com\/windows-insider\/2024\/05\/22\/releasing-windows-11-version-24h2-to-the-release-preview-channel\/\"><strong>Windows 24H2<\/strong><\/a> update installed on your development machine and your target device.<\/li>\n<li>Open your .NET Framework project in Visual Studio 2022 and right-click on your project in Solution Explorer and select <strong>Properties<\/strong>.<\/li>\n<li><a id=\"post-250623-_Int_hBgNUvPC\"><\/a> In the <strong>Build<\/strong> area confirm that the <strong>AnyCPU <\/strong>configuration is enabled and that the <strong>Prefer 32-bit<\/strong> option is unselected.<\/li>\n<li>Select the new <strong>Prefer native ARM64<\/strong> option.<\/li>\n<li><strong>Save <\/strong>and rebuild your project.<\/li>\n<li><strong>Deploy your app<\/strong> to your Arm64 device and run it. You can also debug it using Visual Studio 2022, which will automatically detect the correct architecture and launch the debugger accordingly.<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"1620\" height=\"1033\" class=\"wp-image-250627\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/a-screenshot-of-a-computer-description-automatica-3.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/a-screenshot-of-a-computer-description-automatica-3.png 1620w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/a-screenshot-of-a-computer-description-automatica-3-300x191.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/a-screenshot-of-a-computer-description-automatica-3-1024x653.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/a-screenshot-of-a-computer-description-automatica-3-768x490.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2024\/09\/a-screenshot-of-a-computer-description-automatica-3-1536x979.png 1536w\" sizes=\"(max-width: 1620px) 100vw, 1620px\" \/><\/p>\n<h2>Enjoy the benefits of native Arm64 apps<\/h2>\n<p>By using the new setting in Visual Studio 2022, you can easily run and debug your .NET Framework apps natively on Arm64 devices, without changing your code or your build configuration. This will help you improve the performance, reliability, and battery life of your apps, and give your users a better experience.<\/p>\n<p>We hope you enjoy this new feature and find it useful for your development scenarios. As always, we appreciate your&gt; feedback and suggestions, which help us make Visual Studio better for you. Please let us know what you think by leaving a comment below, or by using the <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/ide\/how-to-report-a-problem-with-visual-studio?view=vs-2022\">Report a Problem tool<\/a> in Visual Studio. Thank you for choosing Visual Studio 2022!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Are you developing .NET Framework applications for Arm-based processors? Do you want to take advantage of the performance and power efficiency of running your apps natively on Arm64 devices? If so, you&#8217;ll be happy to hear that Visual Studio 2022 17.11 has a new feature that makes it easier than ever to do just that. [&hellip;]<\/p>\n","protected":false},"author":1017,"featured_media":250626,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6868],"tags":[237,6932,6852],"class_list":["post-250623","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","tag-net","tag-32-bit","tag-arm64"],"acf":[],"blog_post_summary":"<p>Are you developing .NET Framework applications for Arm-based processors? Do you want to take advantage of the performance and power efficiency of running your apps natively on Arm64 devices? If so, you&#8217;ll be happy to hear that Visual Studio 2022 17.11 has a new feature that makes it easier than ever to do just that. [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/250623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/1017"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=250623"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/250623\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/250626"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=250623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=250623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=250623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}