This article is more than 1 year old
Microsoft previews Visual Studio 2022 for Mac, but why bother when VS Code runs just fine on Apple hardware?
.NET works in mysterious ways
Microsoft has pushed out another preview of Visual Studio 2022 for Mac, stating that it provides a "truly native macOS experience."
The Mac version, like its Windows cousin, is needed for developing with the new .NET 6.0 SDK with C# 10, F# 6.0, and so on. As such, it is late.
"We plan to release the GA version of Visual Studio 2022 for Mac v17.0 in the first half of 2022," said program manager Jordan Matthiesen in a blog post. He attributed the delay to the fact that "this is a major architectural change," the change being more native code in the user interface.
In a presentation at yesterday's virtual VS 2022 launch, Matthiesen spoke about "a cross-platform toolkit that we used to use… that could lead to some experiences that didn't feel quite Mac-like, like tabs feeling off or just little controls that didn't feel quite right."
The framework in question, we think, is mono/xwt, which wraps either the Mac's Cocoa API or Gtk (GNOME Toolkit) via Gtk# (C# bindings) – a fact that hints at some of the history behind this IDE.
Its roots date back to almost the earliest days of .NET, when in 2000 developer Michael Kruger decided to create an IDE for .NET Framework 1.0 using .NET itself. He called his project SharpDevelop. It originally used Windows Forms, so was Windows only, but was adapted for Mono and Gtk#, to become the cross-platform MonoDevelop on Windows, Mac, and Linux.
MonoDevelop was taken up by Miguel de Icaza's Xamarin team, who also created a commercial version called Xamarin Studio. After the acquisition of Xamarin by Microsoft in early 2016, Xamarin Studio evolved into Visual Studio for the Mac, first released at the Build event in early 2017. Unlike Xamarin Studio, VS Mac is Mac-only and is now a closed-source IDE.
Name aside, the original VS Mac was quite unlike Visual Studio on Windows, though Microsoft has made some effort to unify the two. 2019 brought major architectural change, with Microsoft explaining at the time that "the code editor in Visual studio for Mac has been completely replaced with a new editor built on a shared core with Visual Studio on Windows, and with native macOS UI."
The new release is a continuation and perhaps completion of that work, though when we installed the new VS 2022 Preview 3 for the Mac we noted that one of the first things downloaded is the Mono Framework, still used by Xamarin and its new variant MAUI (multi-platform App UI). That said, MAUI support is not yet in this build, another clue showing how far this is from being production-ready. The release notes state: "This release is not 'go-live' and not intended for use on production computers or for creating production code."
What is VS Mac good for? Matthiesen said there are "three major types of projects you can work on," these being .NET Web applications, mobile applications using Xamarin, and game development scripts for Unity. The installer offers .NET, Android, iOS, and macOS as options.
The key question: why is Microsoft bothering with VS Mac when it has a more capable editor and IDE that, unlike VS Mac, is already widely used by developers? This is Visual Studio Code, by most estimates the most popular coding tool out there.
- .NET 6 LTS and VS 2022: Major releases spoilt by continuing concern about Microsoft's commitment to open source
- Angular 13 arrives: Ivy everywhere, View Engine and IE11 support cut
- FYI: Code compiled to WebAssembly may lack standard security defenses
- GitHub CEO forks off: Nat Friedman to quit this month, replacement will report to exec behind .NET Hot Reload fiasco
On Windows, the existence of Visual Studio alongside VS Code makes perfect sense. Visual Studio is the native IDE for the operating system and supports C++ as well as .NET languages; it occupies a similar position to that of Xcode on the Mac. Despite some efforts at convergence, VS Mac remains quite unlike Visual Studio on Windows, which has a narrower purpose. It is still needed for Xamarin development, but for web development with ASP.NET Core VS Code is arguably superior, thanks to its native JavaScript tools. It is notable that the documentation for ASP.NET Razor pages, for example, offers tutorials for Visual Studio Windows, VS Code, and for VS Mac, which states: "We hope to have Visual Studio for Mac instructions soon."
The problem may be related to some internal disquiet at Microsoft concerning the free VS Code competing with Visual Studio. A recent issue over the Hot Reload feature saw an attempt, soon reversed, to reserve it for Visual Studio.
If there were no VS Mac, Microsoft would have to invest more in the open-source tooling for .NET in VS Code, as well as adding MAUI support. That would be an excellent move for the .NET platform, but might not play well with the idea of keeping Visual Studio as the premium offering.
We hear rumours that the .NET team is actively discouraged from investing too much time in .NET tools for VS Code, and while that remains true, VS Mac will continue to be needed, despite being a niche tool compared to either of its relatives. ®