Choice amongst cross-platform .NET IDEs - VS Code, Visual Studio for Mac, JetBrains Rider
A few years back, .NET development on a Mac was resigned to Mono and whatever text editor you knew how to exit successfully. Xamarin Studio came out in 2013 as a standalone IDE for mobile app development, but wasn't a generalized or web development IDE. Later the OmniSharp OSS project came along and added intellisense to a half-dozen editors with its smart out of process intellisense server but these code editors with .NET specific features, not strictly IDEs.
Side Note: I've been writing this blog post on and off for a while. Coincidentally JetBrains Rider is sponsoring my blog this week. It's a coincidence, but I want to be transparent about it as I don't do sponsored/directed blog posts - rather, folks sponsor a calendar week.
Fast forward a bit and we've got some choices amongst cross-platform .NET development on non-Windows platforms.
Visual Studio Code
First, there's Visual Studio Code (more of a code editor, but with a TON of plugins and extensions) that is a very competent editor for .NET on Mac or Linux. It's also one of the best node.js editors/debuggers anywhere - nice if you're working on multi-language projects.
If you look in the lower-right corner there in Visual Studio Code you can see the OmniSharp flame logo in the corner, helping power the C# Extension for Visual Studio Code. For ASP.NET Core web developers, VS Code is pretty good, although its lack of support for Razor Views/Pages remains a hole. You don't get intellisense for your C# when you open a code block like @{ } in a Razor View. That said, there are a bunch of extensions that add snippets for dozens (hundreds?) of languages, syntax highlighting for basically everything, and it's all built on an open source base of TypeScript. VS Code supports git natively as well.
JetBrains Rider
Currently in "EAP," that's Early Access Program/Preview, or beta for the rest of us, JetBrains Rider runs on Windows, Mac, and Linux and lets you manage and build .NET Framework, Mono, and .NET Core solutions. Rider supports C#, VB.NET, ASP.NET syntax, XAML, XML, JavaScript, TypeScript, JSON, HTML, CSS, and SQL within its text editor.
Rider has the smart editor and the 50+ refactorings that fans of ReSharper will appreciate, with lots of choice amongst key-binding. You can tell Rider if you prefer ReSharper, VS, Eclipse, or NetBeans key bindings. It does a ton of custom code analysis and can refactor and analyze your code while you type. It's also got a built in decompiler for exploring libraries you don't have the source for.
Rider also supports Git, Subversion, Mercurial, Perforce and TFVC out of the box and can add more source systems via plugins.
Visual Studio for Mac
VS for Mac is new and while it started as Xamarin Studio, there's been a ton of additions to it according to Miguel de Icaza. In the feature, VS for Mac will share the exact same core editor code that Visual Studio for Windows uses for its text editors like HTML, Razor, CSS and more. One of the things I like the most about Visual Studio for Mac is that it looks like Visual Studio...FOR MAC. By that I mean it doesn't look like Visual Studio on Windows copy-pasted onto the Mac. It has a Mac UI, Mac Icons, a Mac look and feel. Much like Office for Mac, it's a native app that smells native because it is.
The release of VS for Mac includes support for ASP.NET Core and .NET Core. Like all these IDEs and editors, it shares csproj and sln files cleanly with Visual Studio for Windows. That means that you can easily share projects and code with some folks on Mac and some on Windows.
Visual Studio for Mac is best when used for these scenarios:
- Mobile development with Xamarin
- Cloud development with .NET Core and ASP.NET Core, and publishing to Azure
- Web development with ASP.NET Core and web editor tooling
For example, when you make a new Mobile app in C#, you can get an ASP.NET Core backend along with it. Then you can easily publish the backend to Azure at the same time you push your app onto Android or iPhone.
Finally, one of the coolest features for mobile developers on Visual Studio for Mac (and Windows) is the "Xamarin Live Player." This allows you to pair your instance of Visual Studio with your development phone and do continuous development and testing. As you make changes in Visual Studio, the changes are immediately visible in the Live Player - no need to redeploy. That feature is in preview as of the time of this writing.
If you're developing but you're not on Windows, there's never been a better time to develop cross-platform with .NET Core. Check out each of these:
- Visual Studio Code - Windows, Mac, Linux, great code editor.
- JetBrains Rider - Windows, Mac, Linux, cross platform IDE now in preview
- Visual Studio for Mac - Mac, make web apps, Android, iPhone, more
Have you tried these out? What have you found?
Sponsor: Check out JetBrains Rider: a new cross-platform .NET IDE. Edit, refactor, test, build and debug ASP.NET, .NET Framework, .NET Core, or Unity applications. Learn more and get access to early builds!
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
It's a nit, but to be fair, MonoDevelop was out before Xamarin Studio, and was/is general-purpose. From their site:
"MonoDevelop enables developers to quickly write desktop and web applications on Linux, Windows and Mac OS X. It also makes it easy for developers to port .NET applications created with Visual Studio to Linux and Mac OS X maintaining a single code base for all platforms."
It's an absolutely solid .Net IDE for all three major platforms that's entirely open source.
As for Visual Studio for mac being native, I don't think it is. As Monodevelop shares the same GUI with a different theme, which is written in GTK. I think it's just very well themed to look like it's native.
Another thing to consider is the price of Rider (compared to i.e. Visual Studio licensing it's pretty decent pricing (assuming you don't qualify for community license)).
Other than that, great post, Scott. I'm more of a windows user, but am always happy to see the ecosystem is growing and allowing for people to use .NET with whatever OS/IDE combo they prefer.
I'm betting Rider, but I don't know for sure.
I use both VS2017 and VSCode depending on the project type and platform... Love them both!!!
It opens to a point where I can start typing in seconds, granted it does not boot up the resharper host with full intellisense particularly fast either but while it does that I have a non blocking editor where I can roam files. Switching branches and project reloads are effortless.
This is a far cry from the almost hourly crashes or minute long lockups in VS. If Rider crashes it never does to a point where the editor locks up. You might lose resharpers power but again restarting Rider does not take ages taking me out of the zone. Also I have not had this happen since many EAP releases.
Play around a bit with it's setting and Rider also looks the part too: https://twitter.com/Mpdreamz/status/847044595770908676https://twitter.com/Mpdreamz/status/847044595770908676
For cost and easiness, Visual Studio definitely has higher priority..
For cost and easiness, Visual Studio definitely has higher priority..
And not sure how we can distinguish between few similar plugins if there is no official one?
Visual Studio 2017 on Windows 10 Pro is the best.
And I love how SVN integration and unit test management is designed.
I already switched, even it is still EAP. No problems so far.
Comments are closed.
I'm also extremely excited to see how Rider progresses. It's nice to have a third party option to keep Microsoft on their toes!