In november Microsoft announced the availability of Visual Studio for Mac(VS4Mac) at Microsoft Connect();-event. In the beginning, MonoDevelop was the IDE to develop C# on a Mac, which later converted to Xamarin Studio (XS). But since the Build-conference this week, VS4Mac has gone GA which made it the prime IDE for C# developers on MacOS. Because of this, XS is discontinued and VS4Mac is the way to go. Awesome!
VS4Mac isn’t just a rebrand of XS, is has tons of new features added. When it was Xamarin Studio, you would be able to build apps, games & services for mobile using the technology from Xamarin. Now that it has turned into Visual Studio, you can even make Web and Cloud applications that you can deploy on Microsoft Azure. But that’s not all: VS4Mac also has C# 7.0 support! You’ll now be able to create stuff like Local functions and more of the great stuff C# 7.0 brings us (all running on Mono 5.0).
When creating a Native Mobile App in VS4Mac, you’ll now have the option to add a Mobile Backend, which adds a ASP.NET Core Web API project to the solution as well. You’ll get three different heads in the solution: The
.iOSprojects (for Android and iOS respectively) and a new, .MobileAppServicebackend.
The project template already comes with a small example to show you on how the projects work together. When running the
.MobileAppService project, a web server will start on a certain port (in my example:
52599) which will cause Swagger UI to start up. And now the awesome part: VS4Mac supports Multi-process debugging as well! This means that you can debug the
.Droid.) project and
.MobileAppService project at the same time, jumping back and forth from front-end to back-end code.
By default, the Mobile projects use a
MockDataStore that doesn’t make a connection to the
.MobileAppService project. Luckily, it’s pretty simple to connect them to eachother and see the multi-process debugging in action. Take the following steps:
- Open up the
App.csfile in the Shared project
- Set the
- Make sure the
BackendUrlhas the correct port number
Now both the front- & back-end solutions are communicating with eachother, which you can simply prove by setting breakpoints in both solutions and checking the data. Now you’ll be able to create a full solution with a front- and back-end in the same IDE!
In the example above you’ll see the
ItemsViewModel , a class within the
.iOSsolution trying to retrieve the data. It jumps to the
ItemController, a class within the
.MobileAppService project to provide that data back to iOS. Being able to debug across these different threads allows developers to debug solutions quickly.
Other than an ASP.NET Web API, we’re also able to create a website with ASP.NETMVC or Web Forms. Since VS4Mac is running on Roslyn, syntax highlights for HTML and CSS is available. Even the Razor Syntax is supported, making VS4Mac your one-stop shop for Mobile and Web development as well!
But it doesn’t stop there – there’s even support for Docker (in Preview) for those that like to play around with Containers. If you’re using Azure Functions to create a Serverless Architecture, you’re covered. If you’re a user of Unity, selecting a
*.cs file now automatically opens up VS4Mac as well. With all this functionality already in VS4Mac, it doesn’t matter if you’re using Windows or MacOS!
As far as we know now, it won’t have an exact feature parity with Visual Studio on Windows. Developing UWP on MacOS wouldn’t make much sense as well as developing MacOS apps on Windows doesn’t make sense. But more and more functionality (especially Azure support) will be ported to VS4Mac soon, making it possible to have all the functionality you need to develop C# on MacOS. Go ahead and try it out yourself!
- Channel9 – Visual Studio for Mac: https://channel9.msdn.com/events/Build/2017/B8095
- MSDN – Visual Studio for Mac: now generally available: https://blogs.msdn.microsoft.com/visualstudio/2017/05/10/visual-studio-for-mac-now-generally-available/