Arm64 Visual Studio is officially here!
We are happy to announce the first fully supported Arm64 version of Visual Studio that will natively run, allowing building, and debugging Arm64 apps on Arm-based processors.
17.4 GA delivers a native Arm64 experience for Visual Studio that eliminates the need for emulation in most developer workflows. While the improved x64 emulator helps the speed and performance of emulated apps on Arm devices, we know that the absolute best Arm developer experiences will be supported by tools that run natively on Arm64.
We are building a comprehensive end-to-end Arm-native developer toolchain that will provide a fast, familiar, and highly productive managed and native developer experience for Arm-based processors.
Along with the recently released Windows Dev Kit 2023, you can bring your entire app development process onto one device, giving you everything you need to build Windows apps for Arm, on Arm.
Most valued Workloads and Components
During the preview we prioritized the workloads and components most valued by you and the broader developer community and as a result this GA launches with the following workloads enabled:-
- .NET desktop development
- Desktop development with C++
- ASP.NET and web development
- Universal Windows Platform development
- Visual Studio extension development
- Game development with C++
- Node.js development
Additionally, this release includes native Arm64 performance for the Windows SDK as well as Win App SDK!
Arm64 support for managed developers
.NET 6 has had native support for Arm64 from day one, and we are extending native Arm64 support for the .NET Framework in the form of .NET Framework 4.8.1 runtime and SDK. You can now build managed Arm desktop applications using both .NET 7/6, and .NET Framework 4.8.1.
The 17.4 GA release supports Windows Forms, WPF, Win UI 3, Win UI 2 and Universal Windows Platform (UWP). Support for.NET MAUI will be available in a future Visual Studio preview.
When you start with the Arm64 version of Visual Studio, before rebuilding your application make sure you update references to NuGet packages to their latest versions supporting Arm64. The vast majority of NuGet packages already work on Arm64 with no additional changes needed.
Arm64 support for native developers
The MSVC toolset, including the C++ compiler, libraries and runtime, has supported targeting Arm64 for a while now. When running directly on Arm64 devices however, the compilers would run emulated. With today’s release, you get access to the new native Arm64 MSVC compiler toolset, including its C++ Code Analysis capabilities, while still targeting all platforms currently supported by MSVC.
Vcpkg runs natively on Arm64, and while some dependent 3rd party tools may still run emulated, you are able to successfully build and consume 600+ C++ libraries directly in your native ARM64 build environment.
The Arm64 GA for Visual Studio also bundles Arm64 versions of CMake and Ninja.
The C++ Desktop and Game Development Workloads enable C++, with MSBuild or CMake, and all of the editing, building, and debugging capabilities you are already familiar with in Visual Studio on your Arm64 hardware.
Support for writing and using Arm64-compatible extensions is now available! You can also publish your Arm64 extensions on an existing extension entry in the Marketplace. Minimal updates will be required for .NET extensions compiled to AnyCPU but native extensions will need to be rebuilt to support Arm64 Visual Studio. In general, however, making your extension Arm64-compatible can be accomplished in three easy steps. Check out this blog post for more details.
Installing Arm64 Visual Studio
There is a single installer for both Arm64 and x64 Visual Studio. The 17.4 GA installer detects the system architecture and then downloads and installs the Arm64 version of Visual Studio when it is run on an Arm64 device.
For Windows 11 Arm64, you must uninstall all previous versions of x64 Visual Studio before installing Arm64 Visual Studio. There is no side-by-side support for x64 and Arm64 versions of Visual Studio.
To get started with the native Arm64 Visual Studio experience you will need to do the following:
- Ensure you have an Arm64 device with Windows 11.
- Uninstall any prior versions (x64/x86) of Visual Studio from your Arm64 device.
- Download and install Visual Studio 2022 17.4 GA.
Let us know what you think!
We are not finished here; we are actively working on MAUI support in our preview channel. Please continue to vote here on the workloads, components, and experiences that are most valuable to you!
Have been waiting for this since a long time as I had to keep 2 laptops .. one M1 and another Intel based mac.
Next step… make it based on .NET 7/8/whatever and build the UI in MAUI, so we can have the same experience on a Mac as we are used to on Windows.
Does anyone have an example of an engineer application type visual studio done with MAUI ? I mainly find LOB being state based for MAUI ?
Great job! Is there a roadmap, where I can see when MAUI will be available?
Visual Studio Feedback arm64
Thanks Markus, I do not have a specific date to share but please keep an eye out for updates in preview channel early in the new year.
Will this run under any version of arm64 linux? Or is this a windows OS thing? I’ve built a winform app that runs on both windows and raspberry pi 32 bit Raspbian (Debian Linux basically) . I’d love to switch to a RK3588 based single board computer for this and move it to 64 bit Linux. (spacespeak space radio transmitter STEM kit)
Great question, this release is about Arm64 for Window 11 only.
Hi Mark, any reason you haven’t replied to my question on Xamarin support?
If MS won’t implement it on Windows ARM, then tell us. Information is key to allow us to make plans for our future development. I now have an M1 Max that I can’t use for Xamarin development with Visual Studio, other than with Visual Studio for Mac which doesn’t really compare to the quality of Visual Studio for Windows.
Apologies, answered the original question below. Thx.
I will ask for a working link to Visual Studio 2022 17.4 Arm because the one you provided does not work. Yes, it directs to the website, but you cannot download Visual Studio 2022 17.4
I see .NET Maui is mentioned as a future workload, what about Xamarin?
Is there a way to force the install of the Intel version of 17.4 so that we can continue developing Xamarin apps on Windows ARM?
You can’t just drop Xamarin as it is still a supported product, and we can’t migrate to .NET Maui as it is in a shockingly bad state and shouldn’t have exited preview yet.
My apologies for the tardy response. There are unfortunately no plans to move Xamarin to Arm64 Visual Studio.
We have laid out our plans for Xamarin Support here, and while Xamarin is indeed supported until 2024, our investments going forward will center on .NET Multi-platform App UI (MAUI) and that includes Arm64 Visual Studio.
Your options are to keep using x64 Visual Studio on Arm64 Windows. If you have x64 Visual Studio installed it will continue to be x64 (auto updates will not change it to the Arm64 version). One other option is to get an older LTS version of Visual Studio from your Visual Studio subscription. Please note that the x64 version of Visual Studio remains unsupported on Arm64 Windows.
Thanks Mark, I appreciate the response and the clarity, that’s unusual from Microsoft especially around Xamarin and .NET Maui. Refreshing!
Now this is official arm64!
I confirmed via VS support that Blend is NOT supported in Arm64 Visual Studio and loads a STUB to the non-install Blend application. The lack of Blend is a sad failure given that tons of hard work for Arm64 Visual Studio and Windows Dev Kit 2023. I am both mad and sad as all I wanted to do was code in VS on ARM for WinUI#3.
Hi, if I have a legacy WinForms application full of old packages, some of which target only x86, and even COM-components, will I be able to use x86-targeting solution configuration to debug such application in VS for ARM64?
Just bought the new Surface Pro 9 SQ3 after reading this blog entry. The ecosystem seems to work really great now on ARM64, all from Visual Studio 2022, Visual Studio Code, Azure Data Studio (Insider build), Git for Windows (beta build), and hopefully soon also Node.js even though it seems to emulate well in the meantime.
Amazing to do lightweight dev on the go using this machine with 5G and excellent battery capacity. Thanks for all the hard work put in here to make it happen.
BUT. There is one piece of the puzzle missing for me to fully be productive on ARM64.
It is not possible to use a connection string targeted at the instance name “(localdb)\mssqllocaldb” with the SQL Local DB included in the workload “ASP.NET and web development”. Using .Net Core 7 and Entity Framework Core 7 I get an exception for SQLUserInstance.dll not being a valid Win32 application when connecting to the database instance. Instead, I need to retrieve the named pipe by querying “sqllocaldb info mssqllocaldb” and connect using that instead.
I have posted to Visual Studio Feedback about this but no response so far. Working with the named pipe is a real hassle since it gets a new name for each restart of the local db. Is there work in progress to support this? I would assume using SQL Local DB is pretty widely used in local backend development stacks.