Disambiguating .NET, .NET Framework, and .NET Core
So, what's the difference between .NET Framework, .NET Core, and .NET? And why are so many organizations still using .NET Framework 4.8.1 while Microsoft is about to release .NET 10?
TL; DR:
- .NET Framework: The original implementation of .NET, focused on Windows-based applications.
- .NET Core: The cross-platform version developed alongside .NET Framework for broader platform support.
- .NET: With the next version after .NET Core 3.1, Microsoft rebranded to simply .NET to indicate that it was the unified successor to both .NET Framework and .NET Core, and the future of the platform.
The first version of .NET, released in November 2020, was numbered .NET 5.0 to avoid confusion with the existing .NET Framework 4.x numbering scheme.
The last version of .NET Core, .NET Core 3.1, saw support end in December 2022. When a developer today says ".NET Core", they often really mean .NET and are making a distinction with .NET Framework.
To illustrate, here's a diagram of some key .NET versions from their release date to their end-of-life (EOL) date:
.NET Version Timeline
Version data from .NET Framework lifecycle and .NET support policy
Why you should Pick .NET for New Projects
Microsoft recommends that all new product development use .NET 8 or later. If you are starting a new project today, you should use .NET. Here's why:
Cross-platform & cloud-native
- Runs on Windows, Linux, and macOS (it is usually cheaper to deploy on Linux servers than Windows servers).
- First-class support for Docker containers and Kubernetes deployments.
- Cloud providers (Azure, AWS, GCP) all optimize for .NET.
Performance
- Each release brings runtime and ASP.NET Core improvements.
- Benchmarks consistently show major gains over Framework.
Modern Features & Ecosystem
- .NET Framework is stuck at C# 7.x, while .NET supports the latest language features.
- Libraries, tools, and innovation by Microsoft and the community are focused on .NET.
Why .NET Framework is Still Relevant
The last major release of .NET Framework was 4.8 in 2019. Since then, it has only received security and reliability updates, making it effectively frozen: Windows-only, limited to C# 7.x, and missing out on the performance and feature improvements that .NET brings. Its support is tied to the Windows lifecycle, keeping it stable and supported, but no longer evolving. In other words, it is in "maintenance mode."
Despite this, many enterprises continue to rely on .NET Framework often without a plan to move off it. Transitioning from .NET Framework to .NET Core/.NET can be a heavy lift, and not something large enterprises with big applications written in .NET Framework have an appetite to tackle. To do so requires moving off entire technologies, e.g., ASP.NET Web Forms. The comments here and here offer a bit more perspective.
A Sidebar on Mono and Xamarin
There is more to the evolution of modern .NET than just .NET Framework and .NET Core. Mono and Xamarin also played a big role in shaping the ecosystem.
Mono, launched in July 2001, was an open-source reimplementation of .NET that ran on Linux and macOS. In 2011, Xamarin built on Mono to extend .NET into mobile, making it possible to write iOS and Android apps in C#. Xamarin was later acquired by Microsoft, and in 2022 Microsoft introduced .NET Multi-platform App UI (.NET MAUI), the successor to Xamarin.Forms for building cross-platform apps, with .NET 6.
Closing Thoughts
.NET Framework is not going away anytime soon, but it is in maintenance mode. .NET Core paved the way for cross-platform and performance improvements, but all versions of .NET Core are now out of support. For new projects, .NET is the logical choice: cross-platform, cloud-optimized, and keeping pace with the latest C# features.