- Published on
Running .NET on Linux (Ubuntu) for professional work
- Authors
- Name
- Mathias Hove
- @mathias_hove

Windows is history
For a long time, .NET meant Windows. Visual Studio, IIS, SQL Server — the whole stack was tightly coupled with Microsoft’s ecosystem.
That’s not the case anymore. .NET 6, 7, and 8 all ship with first-class Linux support. You can install the SDK in a few minutes on Ubuntu, deploy to Linux servers, and run it all without touching Windows.
But what’s it actually like to use Linux (Ubuntu) as your main .NET development machine? Can you do serious, professional work with it? Let’s look at the pros and caveats.
Pros
1. Same runtime everywhere
The runtime and SDK are cross-platform. If your production environment is Linux (Docker containers, Kubernetes, or cloud VMs), building on Ubuntu means you’re closer to the actual runtime environment. No “works on Windows, fails in prod” moments.
2. Great tooling support
- SDK: Official Microsoft packages exist for Ubuntu.
- Editors: Visual Studio Code works perfectly. JetBrains has also released "Resharper for Visual Studio Code", however this is still in preview. It seems like a VERY good option for Visual Studio on Windows, and seems to replace the OmniSharp implementation. JetBrains Rider is also available and solid on Linux.
- Debugging: With OmniSharp, ReSharper and VS Code’s debugger, day-to-day debugging feels almost the same as on Windows. In Jetbrains Rider, you get a solid debug experience as well.
3. Containers feel native
A lot of modern .NET apps end up in a container, Linux Web App or similar anyway. Developing directly on Linux makes behaviour seamless across your local and released environments — no weird volume mounts or Windows-to-Linux file system quirks.
4. Performance
In many benchmarks, .NET on Linux performs slightly better than on Windows. Startup times and throughput can be tighter, especially for ASP.NET Core services.
Caveats
1. Visual Studio isn’t here
If you rely heavily on full Visual Studio (designer tools, advanced profiler, integrated Azure tools), you’ll miss it. However it is my personal opinion that Rider does a lot of these things better than Visual Studio. I have yet to find a compromise.
2. Some libraries assume Windows
While .NET itself is cross-platform, certain third-party libraries still have Windows-only dependencies (especially anything tied to System.Drawing
, COM, or Windows-specific APIs).
Most modern packages work fine, but you’ll want to double-check before committing.
3. GUI apps are trickier
If you’re building desktop apps with WinForms or WPF — forget it. They’re Windows-only. On Linux, you’re limited to cross-platform UI frameworks like Avalonia or MAUI (with mixed maturity).
4. Office / SQL Server ecosystem
Integration with Microsoft Office (interop libraries) or local SQL Server development is smoother on Windows. On Ubuntu, you’re better off with PostgreSQL or running SQL Server in Docker.
5. Corporate friction
In a lot of companies, IT policies assume Windows laptops, Active Directory logins, and Visual Studio licensing. Going “Linux-first” may raise eyebrows, and might not even be possible due to policies.
So, is it worth it?
If your work is mainly web APIs, background services, cloud-native workloads, or containerized apps, running .NET on Ubuntu is not only possible — it’s often better. You’re closer to production, the tooling is stable, and you’ll rarely feel blocked.
If your daily workflow depends on Windows desktop frameworks, Office automation, or Visual Studio-specific tooling, Linux will feel limiting. However if this is just a small part of your workflow, running Windows virtualized in Gnome Boxes, would solve the problem.
For professional, server-side .NET development in 2025, Ubuntu is in my opinion a first-class option. Just know where the edges are, and if it fits into your workflow.
Tip: Many teams run a hybrid setup. Use Linux for day-to-day development and CI/CD pipelines, but keep a Windows VM for those rare, Windows-specific tasks.