Arm64 Visual Studio
We are excited to announce that the release of Visual Studio 2022 17.3 Preview 2 is now available as a native Arm64 application on Windows 11! This will be the first version of Visual Studio that will natively support building and debugging Arm64 apps on Arm-based processors.
Our key goal with this preview is to introduce and stabilize the most popular Workloads used by developers who are building apps that run on Arm64, and to gather feedback from the community to help us prioritize additional experiences and Workloads as we work toward General Availability (GA) later this year.
Bringing Visual Studio to Windows 11 on Arm64 today!
During the Microsoft Build 2022 conference the Windows team announced a new Arm64 desktop device focused on developers. We’re thrilled to join our Windows, .NET, and C++ partners in building a vibrant Arm64 developer toolchain. Today we deliver the latest version of Visual Studio that significantly reduces the dependence on x64 emulation. While the capabilities of the x64 emulator have expanded, we know that the very best Arm developer experiences will be supported by tools that run natively on Arm64.
Prioritizing the most important Workloads
Arm64 development is a long-term investment, and we have started this journey by focusing on the developer workloads needed to make Arm64 developers productive on Windows 11 Arm64. The first preview for Arm64 will launch today with the following Workloads enabled:
- Desktop development with C++ (for MSBuild-based projects)
- .NET desktop development (WinForms, WPF) using both .NET Framework, and modern .NET.
- NET and Web development
These Workloads will GA at the end of this calendar year, and we will be soliciting feedback from the developer community to help us prioritize even more experiences. Our overarching goal is to prioritize tools and features to run natively where possible and to use emulation only where necessary.
For managed developers
.NET 6 has had native support for Arm64 from day one, and this release extends native Arm64 support for the .NET Framework in the form of .NET Framework 4.8.1 runtime and SDK. You can now build managed desktop applications (Windows Forms and WPF) using both .NET 6+ and .NET Framework 4.8.1.
.NET Framework 4.8.1 is included in the next major update for Windows 11 shipping later this year and will be available for previous operating systems in the future.
While this first preview will include Windows Forms, WPF and Web apps, support for Windows App SDK, .NET MAUI, and Universal Windows Platform (UWP) will be available in subsequent previews.
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. Most NuGet packages should just work with no additional changes needed (our analysis shows 98% of the top 1000 packages already work on Arm64).
For native developers
The MSVC toolset, including the C++ compiler, libraries and runtime, has supported targeting Arm64 for a while now, and we’re constantly improving the quality of the Arm generated code. 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:
Host architecture (the platform the compiler is running on) | Target architecture (the platform the compiler is generating binaries for) | Installation path |
ARM64 | ARM64, including ARM64EC* | <VS Install>\ VC\Tools\MSVC\<version>\bin\HostARM64\ARM64 |
ARM64 | x86 | <VS Install>\ VC\Tools\MSVC\<version>\bin\HostARM64\x86 |
ARM64 | x64 |
<VS Install>\ VC\Tools\MSVC\<version>\bin\HostARM64\x64 |
* Arm64EC allows you to build Arm64 native apps incrementally, by taking advantage of the native speed of ARM where available, and allowing x64 binaries to interop seamlessly in the same process (in emulation mode) where they’re not yet available on ARM.
If you are just getting started with Arm64 or considering it, rest assured that many of the C++ libraries you’re used to are already available on Arm64. Vcpkg also 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.Â
And if you are a Visual Studio C++ developer on a Windows 11 Arm64 device, we invite you to check out the latest Visual Studio preview. By installing the C++ Desktop Workload, you can load any desktop C++ projects and solutions using MSBuild to try any of the editing, building, and debugging capabilities you are already familiar with in Visual Studio. Additional C++ Visual Studio workloads (e.g., gaming) and build systems (e.g., CMake) will be supported in subsequent updates.
Installing Arm64 Visual Studio
There is a single installer for both x64 and Arm64 Visual Studio. The 17.3 preview 2 installer detects the system architecture and then downloads and installs the Arm64 version of Visual Studio on your Arm64 device (support is for Windows 11).
Important
Please note, for Windows 11 Arm64, you must uninstall all previous versions of Visual Studio before installing the Visual Studio 2022 17.3 preview version.
Extension authors
Our official support for extension authors is coming soon! While native extensions will need to be rebuilt to support Arm64, we anticipate minimal updates required for .NET extensions compiled to AnyCPU.
We will be sharing more info on how to migrate your extensions to Arm64 in a future blog post, so stay tuned!
Get started with Arm64 Visual Studio preview today!
We have been building momentum to support our Arm64 developer community and it includes improvements across hardware, toolchains, and of course, Visual Studio, our flagship developer environment. For us, this is just the beginning of the journey; there will be more experiences coming during this preview period.
Today we are inviting Arm64 developers building Windows Forms, WPF, and native apps to check out our latest preview! To get going 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 of Visual Studio 2022 from your Arm64 device.
- Download and install Visual Studio 2022 17.3 preview 2.
We’d love to hear from you about the experiences we are bringing online. Let us know what you like and whether you have suggestions for making Visual Studio even better on Arm64. You can share feedback with us via Developer Community: report any bugs or issues via report a problem and share your suggestions for prioritizing more Workloads.
19 comments
Very good news.
With C++, multi-plateform is something we know but now .NET has really a chance on ARM64.
Few people understand (and know) that the back-end optimizer and code generation output from CL.exe (Visual C++ compiler) is embedded inside the JIT from CoreCLR.
.NET have benefits of 30 years of C++ code generation.
We all know that the future requires more efficiency but the problem is that .NET kids have adopted a heavy weight software construction using thousand of useless dependencies.
We need to educate them to build everything on dedicated platforms.
I salute the continuing effort of the compiler and vs guys to maintain a big effort in shipping complex softwares.
But I ask the main problem: we need to educate .NET fans to be more efficient and use less things less components less useless things and let them understand that simple is beautifull….
Yes I know, it’s a huge challenge.
Chris.
Any chance you would consider building a VM image with windows 11 and VS preview for arm already installed? I’d love to try this on my M1 macbook, but the time investment in configuring all the parts is too big to just give it a go.
I’ve tried parallels with windows 11 arm + VS running in emulation and its 100% unusable. the time to get it running isn’t insignificant so im not ready to invest in trying again yet.
I just want to tell that I’ve tried it out in Parallels on macOS Ventura (Beta). Visual Studio now runs great natively on Silicon/ARM64! It is well worth the investment to create a VM for this. I just uninstalled and reinstalled this. Parallels has a nasty bug in Ventura though.
I’v also tried it with Parallels on my MacBook Air M1 (MacOs Big Sur, ram 16Go 8 CPU 8 GPU) and it’s wonderful.
I had crashes but it restarts very quickly without having lost anything
This will change my daily life.
Thank you !! Thank you !! Thank you !!
Nest step, SQL Server on Arm64 ?
Is there a plan to build a plugin/extension with .NET Core for Visual Studio (It is now possible with .NET Framework.)
Hi William,
We do have plans to allow building extensions with .NET Core, but this effort is separate from ARM64 rollout. If you like to find out more about this, please check out our plans for the new extensibility model here: https://github.com/microsoft/VSExtensibility/blob/main/docs/new-extensibility-model/getting-started/oop-extensibility-model-overview.md.
Thanks!
Finally!
This is great news!!!
Is it possible to create and use x86 COM objects from . Net48 arm64 now that arm64ec exists? How do I make it work? What abot the c++ rt, does it have to be the latest or is it just to install any old rt?
ARM64EC is only applicable in emulated processes (so either an arm64ec or an x64 executable). The Arm64 .NET Framework 4.8.1 is native arm64 and thus cannot load ARM64EC or x64 components. This blog post contains some information about building as ARM64EC: ARM64EC Support in Visual Studio. There will be additional documentation coming soon from the MSVC team on building as ARM64EC and other related scenarios.
Here we go !!
How can I build an existing WPF/WinForms solution with multiple projects targeting x64 for ARM64? Do I need to create dedicated csproj files with the ARM64 runtime identifier? As far as I know, I can’t just add multiple RIDs in the project, right?
First – only projects that build an exe need to build specifically for Arm64 to run natively on the Arm64 framework.
Dll projects can stay Any CPU and shouldn’t require any changes.
For the projects building exes there are two ways to handle this right now:
1) Create a new project that is only Arm64
2) Add a second build configuration to the project (or a few, probably “Arm64|Debug” and “Arm64|Release”) and build the same project twice
And in either the new project, or specific to the Arm64 configuration making sure that
is present will cause the exe to be Arm64 specific and run on the native Arm64 CLR.
So, here is my understanding of the current situation. Let me know if I have any of this wrong:
MS has made an ARM native version of visual studio.
Some workloads are enabled and run fully on arm. (C++ and some .net but not all)
That brings up the question, does the arm version pretty much fully work (for some software preview appropriate value of “fully”), for example can I install other languages that are not supported by arm and run them under emulation and do other workloads work but just end up using x64 emulation. If it does work, does it still produce the same things I would get by developing on a x64 machine and targeting ARM? If not, what are the hard limitations of the preview (things that dont just work slowly in emulation but just dont work at all)
When installing the Arm64 native version of VS you can only currently select from the 3 workloads listed above, the others are not installable.
We’d love to hear any feedback about which other workloads or components you need for your development scenarios so we can prioritize them.
The set of issues specific to Arm64 VS can be found on developer community here: https://developercommunity.visualstudio.com/search?space=8&q=%5Barm64%5D.
A note about emulation: there will always be some processes that run emulated as some tooling needs to match the architecture of the build output (particularly diagnostics tools, or theoretically if some dependency doesn’t exist as native Arm64).
Will Tlbimp support /machine:ARM64 ? 😊
Maybe it’s a working in progress, but I see that NETFX 4.8.1 Tools/Arm64 is pretty barren. Will the .Net Framework SDK tools also be provided in native ARM64 ?
Hi Herman!
Yes, there will be a TlbImp with a /arm64 arch flag for the .NET SDK. TlbExp will also be properly updated.
So I just tried this on Windows 11 for Arm, but it seems it still trying to emulate from X64. Devenv.exe and MSBuild.exe are still running on x64 architecture according to task manager, and it’s also noticeable by zero performance improvements.
Hey Betwin,
Please note if you had the x64 Visual Studio installed it will not automatically update to Arm64 VS. You will need to uninstall the existing Visual Studio and download and install the latest preview installer.
https://visualstudio.microsoft.com/vs/preview/
Thanks
HACKING ATTACKS ON MICROSOFT BY ALONZO HEARD STOLEN INFORMATION TRYING KILL PEOPLE FOR USING SOFTWARE OR ANY MICROSOFT PRODUCT AND SAY BOMB NEXT ALSO WHITE HOUSE