Ask HN: Is doing .NET development on a Mac viable today?

33 points by erokar ↗ HN
I know C#/.NET Core is open source and cross platform, but how is the day to day experience developing on a Mac with Rider (or even VS or VS Code)? Any professional .NET devs doing it? Friction points? Any upsides to developing .NET on a Mac?

28 comments

[ 2.8 ms ] story [ 61.1 ms ] thread
I develop on macOS with my iMac. I’ve done some freelancing with ASP .Net Core and lots of side projects. Currently, I’m working on a Maui app that is iOS specific.

Using the terminal with dontnet Cli and vim is fantastic.

The Maui ecosystem is new, so there is that and my iMac is Intel.

Keep an eye on the overhead with MAUI. I've heard app size is a problem with iOS and startup time with Android. What kind of client profile, if any, would you say opts for ASP.Net instead of PHP/Laravel or Rails?
No idea these days, but @praeclarum was a pretty big c# / mono evangelist on Mac several years ago.
I've been developing an ASP.Net Core Web Api on Linux for the last few months with the dotnet CLI and I haven't run into any cross platform issues yet.

I've used both VSCode and Rider and I think both provide an enjoyable development experience.

Aside from VS only running on Windows, it doesn't feel like a second class experience at all to me.

> VS only running on Windows

What do you mean, there has always been Visual Studio for Mac since the arrival of .Net Core.

They are quite different in maturity and capabilities.
I've been spending a lot of time writing web apps with ASP.NET Core on my Mac with Rider this summer. It has generally been an excellent experience, with one minor caveat.

Debugging ASP.NET integration tests has worked far better on Rider than it does on my VS2022 instance on Windows - where I have to manually trigger the debugger within the test itself. On Rider it worked as expected from the get-go.

You may run into some issues if your project depends on private NuGet feeds, primarily hosted by Azure DevOps. Rider fails to authenticate with ADO no matter what I do, so I had to fall back on manually installing those packages with the dotnet utility.

On small, focused code bases, yes. Anything built in the last 5 years or so can probably be made to work with .NET core and on a non-windows machine.

On large monolithic .NET codebases originally built from the 2000s era, absolutely not. You need to either rewrite or stick to Windows. Porting doesn't seem to be worth the effort.

We (telepathy labs) have our entire platform built in .net core. Most engineers are using macbook pros with a mix of Rider / vs studio ma for ide). The only real issue has been nuget packages with amd64 only binaries bundled in (I’m looking at you librdkafka). You can usually work around theses sort of issues though. Overall its certainly a productive and stable environment, for us at least.
Our whole team does .NET development using VSCode on M1 MacBooks. Our primary API is C# / .NET Core & front end clients are all in React / React Native. We love it.

No friction points that I can think of off the top of my head. Biggest upside is that it just works seamlessly. When switching between code bases, pulling PR’s for review, etc. it’s quite nice not worry about things like whether you have access to the iOS emulator.

Same boat.

Team is primarily M1 MBPs.

Backend APIs are .NET 6 Web API in C#. Deploy to AWS Graviton2 instances. Build in GitHub Actions and AWS CodePipeline (yuck!).

Frontend is a mix of React (Next.js, externally facing) and Vue (internal tooling)

> No friction points that I can think of...

Well...

I use both VS Code and Rider. I'd say that OmniSharp is a friction point because it's still just a bit janky in some edge cases.

As long as a team is willing to pay for Rider (100% worth it), dev experience is great. If not, just be prepared to get used to the quirks of C# on VS Code with OmniSharp and get comfortable with the CLI (which you should anyways). The modern CLI is so good compared to old msbuild.

Have you considered Visual Studio for Mac? That would be a more obvious choice than VS Code, surely?
I do full stack development and Vue, React, JS/TS is so good in VS Code, that I can live with the quirks of OmniSharp. I love how fast an light it feels (compared to VS).

I have not personally used VS Mac, but from what I've seen of it (other devs that used it), it looks like a downgrade. But devs using VS Mac all switched to Rider a few months back and never looked back.

Yes, Rider is my personal favourite. I go for the full IDE experience so VS Code falls short.
Visual Studio for Mac is evolving fast. Today it's much better than it was a few months ago. Now it is a good option for backend development.
I still have problems getting VsVim to install after recent VS Mac updates. Any IDE without a Vim plugin is a no-op for me.
I develop `tone`[1] and `tonehub`[2] (command line app and web api) completely on a 2015 MacBook Pro using Rider and I love it so far. I may not be the most experienced .NET developer, but this might be good as another perspective... It's easy and very intuitive. Deployment is also very simple (manually as well as via github actions)

[1]: https://github.com/sandreas/tone

[2]: https://github.com/sandreas/tonehub

With tree shaking .NET you can compile your C#/NET program into a fairly small single executable on the three major platforms if that's what you need, which is nice.
Generally fantastic, will second comments on web development being pain free.

Probably want to invest in Rider, I seldom here good things about VSCode and VS for Mac(it’s a unique program, not full visual studio like the name suggests).

Have had some hiccups:

For desktop development I have a little app to run a label printer, Avalonia itself ported over fairly seamlessly however I discovered printing (system.drawing in general) is windows only.

Not .Net specific but I’ve had problems with emulation.

MSSQL docker isn’t supported, you can use edge which has some limitations which may or may not be a problem (or not a problem till it is).

Azurite docker works but needs Rosetta.

CosmosDB emulator flat out doesn’t work.

> Azurite

There is a VS Code extension which works quite well.

> CosmosDB

Microsoft has been dragging their feet on this one; not sure what's going on. Really wish they would make this happen.

Inbuilt rider works well too, I prefer having it all in docker compose I can wipe and recreate as one. Runs fine on nodejs so it’s surprising they haven’t been able to provide an arm build. More just slightly annoying than anything.

Emulation across the board just doesn’t seem to be a priority for Azure, seen the attitude of “just run a cloud development environment” a few times.

I'm on m1 MacBook and do xamarin and c# projects all day full time.

Rider is really nice and I now find going back to VS harder as everyday passes.

It is. We have many developers doing this at my company, full-time. They use Parallels to run the apps we have that require .NET Framework, but mainly work on .NET Core 3.1 and newer apps using M1 Macs.

There were some hurdles to jump over initially, but our internal tooling is evolving and it's a very viable option for us now.

We do a lot of .net core development (our main product is a large codebase in .net with code written and refactored from back to 2013) and most of it is on mac. Most use rider or vs for Mac. Most code is asp.net core, we have a large xamarin app and a few internal desktop apps (written in windows.forms which work under mac, windows and linux). I would say the experience is great.
I’m using a (M1) mac to write F# in Rider - no issues at all.
Doing .net 6 development on Xubuntu + Rider, and it's wonderful. Everything works apart from the profiler, for some reason. I also miss LinqPad a lot. Rider has "C# interactive", but it can be difficult to set up when you need custom .dlls etc. Generally the abscence of all of the Windows bloat and Docker/bash/console workarounds/stubs and so on, you get the idea, is a bliss.