I've recently been building .NET Core back-end services that run on Linux. Linux .NET development is in an interesting place; it's clearly the future of back-end .NET, but it's still a little rough around the edges compared to our old friend .NET-on-Windows.
Let's dive into what you (an experienced Windows .NET developer or a .NET-curious Linux developer) need to know to start building .NET services for Linux. I'll cover IDEs, service hosting, Linux system calls and more.
Background & Motivation
.NET development for Linux has been possible via Mono since 2004, but it was always a bit… fringe compared to Windows .NET development. That all changed when Microsoft released .NET Core in 2016 as a cross-platform .NET implementation; first-party support from Microsoft is a big deal to most .NET developers.
We're also in a world where Linux is the lingua franca for back-end development; if you want to do anything involving cloud services, distributed systems, or containerization, Windows is typically an afterthought (if it's supported at all). I want to skate to where the puck is going (sorry!), and it's headed toward Linux.