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|
<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).
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.
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.
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.
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.)
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.
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.
Ok. Then arm64ec is the opposite of what I thought.
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 ?
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.
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.
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
atls.lib for ARM64 is not installed. However, atls.lib for both x86 and x64 are installed. Is that your expected behavior?
When installing have you selected the “C++ ATL for latest v143 build tools (ARM64)” component from the Individual Components tab?
I believe that should ensure that the arm64 copy is included with your VS installation.
Does this mean IIS can now execute on Windows 11 ARM64 – currently I am able to build some projects (.net 4.7.2 and .net 6 core) but no project can currently be executed with the exception of simple Blazor projects in visual studio 2022. Since I am on a mac m1 I have resorted to using Rider currently in native macos to build and run my .net projects – I’ve only ever used visual studio, but have been forced to move to another ide.
I will test visual studio preview to see if it can now run .netcore projects (3.1, 6) and .netframework 4.7.2 projects.
My project teams have switched to macbook m1’s unfortunately due to superior support for design envrionment; we have been trying to bring back intel but more than likely that won’t happen any time soon, since we have a mixed bag of platforms rather than just .NET.
I am using MacBook M1 Max with Parallel. I just download Preview 2 and the performance is lot better than the emulated version. I had to go back to the 17.2 because the 17.3 Preview 2 does not have all the workload i need. So I have 2 questions.
1) Are you planning to add more workload on GA Version. For example Azure, Database, SSIS, SSRS… (This are core tools for enterprise)
2) I understand it is hard to get all the workload ready on first GA version – so if not ready can we run both the emulated and arm64 version side by side. If not then this is a non-starter for me.
1. Yes, we are planning to add more Workloads. The overarching goal is to add more Workloads over time so please continue to provide feedback, this help us create priority. Developer Community site is here https://developercommunity.visualstudio.com/home
2. We do not support Arm64 VS side by side with x64 VS.
Will Windows 10 get net481 with arm64 support? I am thinking about not just Surface Pro X which is probably already upgraded to Windows 11 in most cases, but Windows 10 Iot.
Excellent news!! – Which languages are supported using ARM64 VS??
I’m attempting to build a legacy .NET Framework 4.8 Web Application and getting the following error:
error MSB3082: Task failed because “aspnet_compiler.exe” was not found, or the .NET Framework v4.0 is not installed. Please install the .NET Framework v4.0.
Is this scenario supported and if so, I’m wondering if someone can point me in the right direction to get it going? More details…
Fresh Win11 ARM64 install.
Fresh VS 2022 17.3 preview 5
Web Application seems to run fine. I just can’t precompile the views.
Some possible relevant portions of the .csproj file:
Could you please file this as a feedback ticket either through VS or on Developer Community?
That will make it much easier to track and investigate this.
Performance on my M1 Mac in Parallels has improved drastically comparing to x86 arch.
Waiting for Windows App SDK workload support now.
Visual Studio 2022 17.3 is released. How do I install native ARM64 version of it?
The Arm64 version of VS is staying in preview until 17.4 (noted on this blog post: https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-3-is-now-available/). So the native Arm64 version will continue to only be available in the preview versions for now.
Will Xamarin Native be part of the ARM supported VS?