When the preview of Visual Studio for Mac was announced at Microsoft’s online developer event, Connect, in 2016, it was based on the existing Xamarin Studio for Mac OS and it only for developing mobile apps. The release version announced at Build 2017 is supported for use in production, and it includes several new workloads. “Now it’s mobile plus cloud and ASP.NET. You can create new .NET Core apps, debug them and deploy them straight to Azure. We also have gaming with Unity support,” says Nat Friedman, CEO and oc-founder of Xamarin and now corporate vice president of mobile developer tools at Microsoft.
And yes, that includes developing for HoloLens. “Developers who use the Mac can stay in an environment that they’re more comfortable in and still build those kind of applications and target what I think is the strongest attempt at mixed reality,” confirms Friedman.
Just like Visual Studio on Windows, there are multiple versions of Visual Studio for Mac; the free Community edition, the Professional version that includes subscription benefits, and the Enterprise edition (all of which are available to download). You’ll need to be online throughout the installation; an offline installer is promised for a later release.
Visual Studio for Mac will be getting updates every six to eight weeks, just as Visual Studio for Windows and Visual Studio Code do. The first new features are already available as previews: deploying and debugging .NET Core and ASP.NET Core code in Docker containers, building, deploying and debugging Azure Functions (event-based serverless programming) and building C# and Xamarin code for IoT devices like Android Things.
Other areas that the team are looking at including adding more languages, using the same open source Language Server Protocol that’s used by Visual Studio Code, and making the extensions frameworks for Visual Studio more similar on Windows and Mac.
Don’t think of this as just a new name for Xamarin Studio. Yes, Visual Studio for Mac is based on the MonoDevelop core, and it will replace Xamarin Studio for Mac users in time, but that core has been extended significantly to support working with .NET Core and Unity and deploying to Azure. And much of that code comes from Visual Studio on Windows.
Even before Microsoft bought Xamarin “we had already begun to share a lot of really important code with Visual Studio,” explains Friedman. “The biggest example was Roslyn; we replaced our own autocomplete engine with Roslyn and got much better results. Now we’re sharing more code with Visual Studio and with Visual Studio Code. All the work that we’re doing to deploy from Visual Studio for Mac to Azure, and to Azure Functions, to remotely debug production code in Azure, to use Connected Services; that’s all shared code with Visual Studio.”
Over time, Visual Studio for Mac will share even more code with Visual Studio on Windows. “We’re just looking more and more opportunities because there’s no need to repeat work,” Friedman points out. It’s also high-quality code that’s easy to reuse, says Xamarin co-founder and now Microsoft distinguished engineer Miguel de Icaza.
“The code for Visual Studio is just incredibly well architected. It is a design jewel – the core components are independent of the UI, and were already cross platform.”
The goal isn’t to have identical development environments on Windows and Mac so much as to have an IDE that feels as if it belongs on each platform, and suits what developers want to do there, Friedman explains.
“If you look at what an IDE is, it’s an editing surface that’s used to type code, and then there’s a bunch of other tools, and enclosing all those is a windows management framework. Our goal is to build an IDE that really feels native on Mac, with native Mac controls and layouts and UI metaphors. Lots of the window management chrome will not be shared, it will always be native; but within that chrome, the underlying engine, the debugger, the code completion and obviously tooling like compilers and so forth shared. So, you can expect to see more of the cosmetic elements be native to each platform, and the engine and the smarts being shared.”
He notes that the code sharing has already gone the other way; all the Xamarin functionality that’s in Visual Studio for Windows now came from Xamarin Studio.
So yes, you’ll be able to do desktop app development with Visual Studio, for Mac but that will make more sense for desktop Mac OS apps rather than Windows apps (unless they’re UWP apps using Xamarin Forms). After all, you’d have to spin up a virtual machine or use a cloud service to test those Windows apps.
How about Visual Studio for Linux? This is the new Microsoft after all. It’s not currently planned, but De Icaza enthusiastically points out the feedback site where developers can vote for the possibility.