Visual Studio for Mac was released just under two months ago at Build 2017, and already we’ve seen tremendous growth in .NET developers working on the Mac. Visual Studio for Mac enables you to build native apps for macOS, native mobile apps for iOS, tvOS, watchOS, and Android, using Xamarin and Xamarin.Forms; and web sites and services using ASP.NET Core. You can also use Unity to build cross-platform 3D games.
To help new Visual Studio for Mac developers get started, we’ve created some hands-on labs to walk through some of its exciting new features. The first two labs are available today, for Unity game development and connecting to Internet of Things (IoT) devices, and we’re planning to release 4 more in the coming weeks.
Lab 1: Building Games with Unity in Visual Studio for Mac
The first hands-on lab demonstrates how to build and debug Unity game projects. It guides you through 4 tasks:
- Setting up a basic Unity project
- Working with a 3D game scene
- Debugging the game script
- Exploring additional features that support game development.
Follow these instructions to download and install Unity, then use it with Visual Studio for Mac to script and debug a 3D game scene.
Lab 2: Targeting IoT Devices in Visual Studio for Mac
Our second lab shows you how to create apps that run on an IoT device – such as the popular Raspberry Pi – from Visual Studio for Mac. It guides you through 3 tasks:
- Setting up your Raspberry Pi
- Creating the IoT project
- Extending your IoT app with Xamarin components to add additional features.
This functionality is currently in preview, but we’ll make sure to update the lab if any changes will be necessary when we ship it in a stable release.
Follow these instructions to write your first IoT code, then visit our IoT samples for more ideas.
Get Started
Download Visual Studio for Mac today, and visit our labs repo on GitHub to give game development a try or connect to an IoT device. With the Community Edition it is easy and free to get started. Keep an eye on this blog for more labs that demonstrate all the other great features of Visual Studio for Mac.
![]() |
Craig Dunn, Principal Program Manager @conceptdev Craig works on the Mobile Developer Tools documentation team, where he enjoys writing cross-platform code for iOS, Android, Mac, and Windows platforms with Visual Studio and Xamarin. |
Why?
Why create an IDE for mac?
Mac users can install windows and work on VS.
Microsoft need to embrace the open source. !
I think Microsoft should even open source its UI library that renders graphics in Windows 10 and Provide Api to create new UI designs to connect with Windows Core. !
Microsoft definitely embraces open source! Check out https://opensource.microsoft.com/ which lists many of our efforts.
Regarding Visual Studio for Mac, it uses .NET (open sourced), Mono (open source), and Roslyn (open source), and is based on an open-source IDE. The project types in Visual Studio for Mac are also based on open sourced technologies, such as ASP.NET Core, and Xamarin for iOS, Android, and Mac development.
You might also be interested in the XAML Standard announcement that was made at //build 2017 https://github.com/Microsoft/xaml-standard
why develop windows? people can just use linux, then all those windows devs can be fired and start working on personal projects.
What kind of people will use Linux?
Linux was supposedly built for developers and servers.
I am a developer and, while I use Linux out of curiosity, I wouldn’t use it on every day things (neither for fun nor for work). Even if you paid me to… And I love Windows (despite some bad experiences one could have in some occasions).
On top of that, Windows, which was not built for servers nor for developers only, directly competes on the server arena (even more today with nano server). Even on the server management area, where I happen to hate the PowerShell language and its syntax, you cannot refuse that PowerShell is way better than Bash.
On the original question now, I think MS created a VS for Mac just to attract the poor Mac developers who had to put up with Apple technologies and policies for so long and never got an alternative. But still… developing a whole IDE for them is too much of a work. Plus to boost the open source community of .NET and their app store as others might have mentioned.
Let’s hope things turn out good for MS plans. 🙂
Microsoft wants developers to prefer .NET… because the best platforms and services for .NET will always be Microsoft’s.
Because they didn’t – they rebranded the work Xamarin had already done… who had rebranded an open source C# IDE in the first place…
There’s many reasons to provide a native IDE for Mac developers, ranging from performance to native project types (like building apps for macOS) to familiar user-interface and the localization and accessibility features. A native app does all those things better than hosting a Windows VM.
Visual Studio for Mac’s goal is bring a native macOS-feeling feeling while providing the power of Visual Studio for cross-platform development: ASP.NET core for websites and web services, as well as iOS, Android, and macOS mobile and desktop projects, and Unity 3D games. All those project types can be easily shared between developers on Windows and macOS as the solution and project files are the same.
Our goal is for developers to be productive with our tools no matter what platform they prefer to work on.
Because MSFT has lost whole generations of “web-only” developers to MACs. Because of things like
– A fully functional POSIX compatible user-land, something MSFT is now trying with the Ubuntu on Windows thing
– A actually working high-DPI scaling, Windows 10 still has many issues here
– No stupid path lengths restrictions breaking things like NPM on Windows
– Many non-gui OS software just compiles and works with configure/make/make install
– Most web applications are deployed to *nix based server anyway, so developing on a *nix based macOS avoids a lot of pitfalls with \ vs / in pathes etc.
No MSFT still hopes that web-devs are jumping at .Net core for the back-and running on *nix servers and use HTML5 for the front-end without any possibility to share code. This will hardly work out anyway, but that’s why MSFT has rebranded Xamarin Studio and web-centric VS for MAC of of it.
> – A fully functional POSIX compatible user-land, something MSFT is now trying with the Ubuntu on Windows thing
> – A actually working high-DPI scaling, Windows 10 still has many issues here
> – No stupid path lengths restrictions breaking things like NPM on Windows
> – Many non-gui OS software just compiles and works with configure/make/make install
> – Most web applications are deployed to *nix based server anyway, so developing on a *nix based macOS avoids a lot of pitfalls with \ vs / in pathes etc.
Well, I don’t know about other people, but I never needed any of these.
From my standpoint, being able to run *nix commands on a computer is a security hole (the way bash works is totally insecure and hackish and many hacks to it are known for a long time). Not the same with PowerShell though… And, unless you are a penetration tester who wants to use tools that work on Linux, you should not need to have that anyways…
For high DPI and 4k, I would buy a 4k screen to have it for my laptop, but I would never have it as a primary screen. The hardware is not mature enough to support so many pixels anyway. The battery gets drained easily and you cannot even render demanding graphics on such screens. And on top of that, it is highly questionable if 4k makes sense in a typical 17” laptop monitor, let alone in smaller inches. Now if you work on a desktop and power and size does not matter, still Windows does a good job rendering on those 4k screens. Some old apps may not, but I cannot imagine why you would use such an old app in a corporate environment. Clearly the author does not maintain the app, so you should probably care more about the security issues you are inserting into your system and not for the way the app looks. At least on my line of work, all I need from apps with GUI is Visual Studio, SQL Server Management Studio, some open source WPF apps that scale well on all screens, an email client (Win10 has a free one and there are many others that work great too), maybe VS Code or a similar editor (even Notepad++ scales well now, even though I don’t quite like its looks anyway…).
Plus, the max path length rarely is a problem to me and you can always enable support for extremely long paths (there is this ability in Win10).
I have been working with quite a few companies and I was initially amazed to see them use Windows servers. As a newbie developer, I thought that Linux was more secure, reliable and stable and thus preferred. But it turns out that many companies switch their servers to Windows now and basing their whole stack on MS techologies. Why? It could be many reasons:
– Windows became much more secure.
– It will even be able to run as a headless production server soon.
– Managing Windows is easier and many people can do that.
– You have always support and guidance and even if you don’t (MS goes on a group company vacation or sth), there are still millions of people online that may have the answer you are seeking. Either because they had the same problem or because they know how the OS works.
– There are always MS employees that can help you on every aspect of your application, from the DB, to the application server, to the client framework, to anything. And you get serious opinions from people with expertise. I have many doubts if you get the same level of attention from the Linux Foundation or whoever is supposedly considered responsible for Linux and its related software…
> No MSFT still hopes that web-devs are jumping at .Net core for the back-and running on *nix servers and use HTML5 for the front-end without any possibility to share code.
Share code as in “share code between client JS and server JS”? I find this idea naïve for most applications too. Unless you don’t care about security at all, you should not build a server running NodeJS code and expose it to the internet. If compiled and type-safe code is not always secure enough, having JS run on a server should ring all kinds of bad-security bells to people’s ears. Not to mention the quality of code JS usually has… I would never want to work with code of that average quality as a codebase. That is not to say that JS code is always bad. E.g. I like my JS code. Just, apart from my coding style and a few others (counted on my 5 fingers) that I have seen, it seems that most JS developers write crappy, ugly and unsophisticated code. I guess there is something to that buggy, unsophisticated, wrongly and poorly designed language that attracts the similar kind of developers…
And judging form the number of sites that are broken on the internet thanks to JS-related issues, I would say that JS is not a reliable and safe technology to use on the server-side either.
And, honestly, having JS run on browsers was a bad idea to begin with. I could come up with a better language while being drunk and sleepless for a week. The same goes for HTML5 and CSS. Not sophisticated at all. They are just a pile of hacks that tend to work for some cases. Of course many improvements are happening to them as we speak, but saying that they are better than .NET (in quality, flexibility or other things) does not seem reasonable to me. The best thing for the internet would be to drop the current HTML and rewrite the specs from scratch. Same for CSS: SASS is a good replacement for this crappy technology. Same for JS: while it is being improved and fixed all the time, the whole language is obsolete. Starting from scratch will be the best move. And for those who are afraid of “breaking the internet”: the internet is already broken, plus you will not break it if you know what you are doing. If you don’t, just retire and let other people do your job. I am sure any developer will make a better job than what the current specs have to display…
Of course, MS should make their OS even more resilient, secure and stable and provide us with more power and tooling.
Having Windows hang, the shell to crash, because of the X crapware the user installed should not be acceptable.
I believe there is still much work to be done there by MS.
Plus, MS should make their frameworks (e.g. ASP.NET MVC) more secure and flexible out of the box. Rewriting parts of the framework so that your app conforms to the OWASP suggestions should NEVER happen. Not that non-MS frameworks do better, but anyway…
For me, .NET Core is exciting.
And the prospect of having .NET code compiled to run on browsers in a “web-assembly” kind of way seems even more exciting. I just hope this comes true for the sake of quality on the web. It is funny having people discard languages because they allow null as a value and at the same time have (other or the same) people all excited with JavaScript which allows any kind of crazy thing you throw at it…!
@Me
Personal taste is one thing and not to debate. Bit in business, it’s about facts. According to the latest Netcraft statistics, only 25% percent of all public web servers are running Windows. And only 10% of public web servers are running IIS. And if you ever go to a web developer conference, you will hardly see something else than MacBook Pros. Even participating the web devs working for MSFT have them.
.Net could have been platform neutral from the beginning. It was deliberately tight to Windows back then, as a Windows-only Java alternative. Because MSFT feared that Java’s platform neutrality would provide an easy way for devs out of the MSFT vendor lock-in, which was the base of MSFT business for two decades.
And now MSFT spends all this money to make the .Net Ecosystem including dev tools independent of Windows. It’s a lot of money and hardly spend just for fun.
As a consultant, I warned all my customers from going deeper and deeper into MSFT lock-in (ASP, IIS, SharePoint, MSSQL, WCF, …). They just laughed at me until 3 years ago. No most of them are running around and whining at MSFT to bring all these proprietary stuff away from Windows so they can go to Cloud and Mobile because their clients cry for it. I can’t help myself feeling a bit of Schadenfreude.
@Me (nice name 😉 😉 😉 ), Agree with you on the JS hackage. In fact every self-respecting .NET developer will. I will say that the whole point of “sharing” code is to *leverage* shared knowledge between tiers, thereby saving time and ultimately total cost of ownership (and development) of your code. For example, if you write a logger in the client tier with JS, you can easily leverage that shared knowledge in the server tier (and vice versa of course) and also with the native tier if you build native applications with JS via the growing available frameworks such as NativeScript and the like.
With .NET, this is not possible in a web browser context, so you are left to re-develop your logger (and every other component) in .NET, along with every other component you decide to use (all of them). You end up developing and maintaining two different codebases that each have their own set of costly bugs. This is a very expensive approach (both in time and resources/money) and it’s great to see business-minded developers recognizing this and switching to JS-only solutions to save the cash. Hopefully, this exodus will further MSFT to protect their investments in .NET to provide a viable web-based host for their heavily-invested IP:
https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/10027638-create-a-ubiquitous-net-client-application-develo
I would like to see Visual Studio for Mac ported to Linux.
We welcome feedback and feature requests, you can both submit and vote on ideas at our Visual Studio for Mac UserVoice page https://visualstudio.uservoice.com/forums/563332-visual-studio-for-mac
In the mean time, Visual Studio Code provides a great light-weight code editor for Linux that supports .NET Core https://code.visualstudio.com/
Visual Studio for Mac running a webforms ASP.NET application is really really REALLY more fastest than to run the same thing on Visual Studio in Windows in a VM with IIS Express.
We strongly need support of C++ in Visual Studio for Mac, please
You can vote for this feature at out Visual Studio for Mac UserVoice page https://visualstudio.uservoice.com/forums/563332-visual-studio-for-mac/suggestions/17141708-support-c-in-visual-studio-for-mac and provide additional thoughts or comments.
Where is TFS support? It’s the most popular request on UserVoice by far. What is MSFT waiting for? Provide some evidence you are really listening and at least put it on a roadmap.
Yep, TFS is at the top of our UserVoice https://visualstudio.uservoice.com/forums/563332-visual-studio-for-mac/suggestions/17136163-tfs-version-control and the product team has acknowledged it. Please keep the feedback coming.
I think this is a great step in the right direction, but there’s still a Continental Divide for cross-platform developers. I can’t develop Windows apps on a Mac (without installing a full license of Windows 10 into a VM or Bootcamp or Parallels…) and I can’t develop iOS apps on Windows at all.
I want to be able to do everything from my Macbook. Create a Cordova app and crank out a compiled app build on iOS, Android, and Windows 10 with a single click. Without saying “Xamarin”, how far away is that from reality?