Special Offer: My C#/.NET Bootcamp Course is out now. Get 10% OFF using the code FRIENDS10.

.NET has been around for over 20 years, but with so many versions and updates, and different framework names such as .NET Framework, .NET Core, and more, it’s easy to get lost in history.

This video and this article will guide you through the evolution of .NET from its humble beginnings to the present day.


You’ll gain a deeper understanding of the current .NET landscape and learn about the most commonly misunderstood term in the world of .NET – the .NET Standard. 

Whether you’re a beginner or an experienced .NET developer, I promise at the end; you will understand the past, present, and future of the .NET platform.

Introduction

I’m a software engineer with over a decade of experience with the .NET platform. On my YouTube channel, you learn all about .NET development.

From a high-level overview, everything started with the .NET Framework in 2002. .NET Core followed in 2016 and was finally turned into .NET, beginning with version 5 in 2020.

.NET Versions - High-level overview

However, we need to dive deeper to understand how it came along, the reasoning behind renaming the platform twice, and what exactly .NET Core differentiates from the .NET Framework.

Let’s relive the .NET journey chronologically by traveling back in time and starting at the beginning.

.NET Framework

.NET Framework Version 1.0 - 4.0

Version 1.0

The first version of the .NET Framework was released on February 12th, 2002. It has been a Windows-only platform since the whole lifetime of the .NET Framework name, starting from 2002 and going all the way to the present.

To give you some perspective and nostalgic feelings if you are the same age or older as me: .NET Framework 1.0 was released for Windows 98, Windows ME (Millenium Edition), NT 4.0, and the beloved Windows XP.

The .NET Framework 1.0 introduced the .NET CLR, the .NET base class libraries, ASP.NET, and, most importantly, the first version of Visual Studio .NET.

Version 2.0

The .NET Framework 2.0 was released at the same time as Visual Studio 2005 on January 22nd, 2006.

The most notable new C# features included partial classes, nullable types, anonymous methods, and DataTables. 

However, the biggest addition to .NET was the introduction of Windows Forms (short WinForms).

Version 3.0

.NET Framework 3.0 was released on November 6th, 2006. It introduced Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and Windows Workflow Foundation (WF).

Version 3.5

.NET Framework 3.5 was released on November 19th, 2007, and brought meaningful improvements and new features for existing technologies, such as WPF and WCF.

And most notably, the new release of Visual Studio 2008, Extension Methods, LINQ, and Entity Framework.

Version 4.0

.NET Framework 4.0 was released on April 12th, 2010. It was a massively improved and enhanced version. It also came with the Visual Studio 2010 release.

The most notable new technologies introduced were Parallel LINQ, Task Parallel Library (TPL), and the introduction of the BigInt data type.

Version 4.5

.NET Framework - Versions 4.5 to 4.8

.NET Framework 4.5 was released on August 15th, 2012, together with Visual Studio 2012. It brought built-in support for Async/Await to handle asynchronous operations.

On the technology side, the Universal Windows Platform Apps (UWP) was introduced. It allowed targeting multiple devices with a single code base.

Version 4.6

.NET Framework 4.6 was released on July 20th, 2015, together with Visual Studio 2015. It added the Just in time (JIT) compiler called RyuJIT, as well as the first open-source .NET Framework packages.

Besides Visual Studio 2015, the most notable addition was HTTP/2 support.

Version 4.7

.NET Framework 4.7 was released on April 15th, 2017, together with Visual Studio 2017. 

It included a few new features, such as object cache extensibility or improved Transport Layer Security (TLS), but nothing groundbreaking.

Version 4.8

.NET Framework 4.8 was released on April 18th, 2019, and was the last release of the .NET Framework era. It included the release of Visual Studio 2019.

It included improvements for the JIT compiler and added anti-malware scanning to all assemblies.

.NET Framework 4.8.1 was released on August 9th, 2022, and was the last patch version at the time of writing this article and recording the video.

.NET Core

The .NET Framework was a success story for more than 15 years. More and more developers and companies adopted the programming languages and started developing applications based on the .NET Framework.

However, it is tightly coupled to the Windows operating system. It makes applications running on the .NET Framework limited to running on Windows. Also, the release cycle depends on Windows.

With modern software development, we expect rapid development and small and incremental changes. Another trend is that almost all modern developer platforms are open-source.

Open-sourcing the .NET framework was never an option due to its licensing issues being tightly coupled to Windows. Also, the other limiting factors, such as being limited to Windows, became a bigger problem over time.

This is where .NET Core comes into play. It was designed to be the next evolution of .NET. It’s a free and open-source platform with cross-platform development at its heart. 

It’s independent of Windows and allows developers to use Linux, macOS, and Windows to build applications running on .NET Core. Those attributes make .NET a viable option for cloud-native development.

.NET Core Versions 1.0 - 3.1

Version 1.0

.NET Core 1.0 was announced in 2014 and released on June 27th, 2016, and brought us C# 6.

This places the initial release of .NET Core after .NET Framework 4.6 but before .NET Framework 4.7.

It had a limited number of reimplemented APIs and was a proof of concept and the foundation of the .NET we use today. It demonstrated cross-platform support and a lightweight, modular runtime optimized for cloud and container scenarios.

ASP.NET Core, a web application development framework, was the first new technology built on top of .NET Core and released with .NET Core 1.0.

Version 2.0

.NET Core 2.0 was released a year later, on August 14th, 2017, a few months after the .NET Framework 4.7 and Visual Studio 2017 releases. It also brought us C# 7.

The major features were ARM support for IoT scenarios, improved performance, and scalability, including support for the Span<T> and Memory<T> types.

Version 3.0

.NET Core 3.0 was released two years later, on September 23rd, 2019, a few months after the final .NET Framework version, 4.8. It also brought C# 8.

It added support for Windows desktop application development with Windows Presentation Foundation (WPF) and WinForms, and HTTP/2.

Version 3.1

.NET Core 3.1, which was a long-term-support (LTS) release that was highly adopted in the community, was released on December 3rd, 2019.

The previous .NET Core versions were mainly for people experimenting with the new implementation of the platform.

Starting with .NET Core 3.1, there was a massive shift towards developing applications on the new .NET Core instead of the old .NET Framework. It was also the first version I used for a .NET Core application in production.

Version 5

Unified .NET - Versions 5.0 - 8.0

.NET 5 was released on November 10th, 2020. The jump from version 3 to 5 was done to prevent mixing up the .NET Framework with .NET Core.

.NET 5 also brought C# 9. It’s also the version where “.NET Core” was renamed to just “.NET”. Also, Blazor Server was released with .NET 5.

Since version 5, we get a new .NET release and a new C# compiler version every year. The even numbers are long-term support releases with three years of support, and the odd numbers are short-term support releases with 18 months of support.

Version 6

.NET 6 was released on November 8th, 2021. It was the first long-term support (LTS) release after the rename to .NET. It also came with C# 10.

On the same day, Visual Studio 2022 was released, including .NET Hot Reload, a technology that massively speeds up the development feedback cycle. 

Minimal APIs for ASP.NET Core development, top-level statements, as well as file-scoped namespaces, were introduced, to mention a few relevant changes.

Version 7

.NET 7 was released on November 8th, 2022, as the current short-term support release and came with C# 11.

The required keyword is something I often use when building ASP.NET Core backends, and native ahead-of-time compilation (AOT) produces standalone executables.

In the foreseeable future, we will get a new .NET and C# version every year around November. .NET 8 and C# 12 are expected for November 2023.

With .NET 5 in 2020, there was no reason to start new projects on .NET Framework. Today, I cannot think of any scenario where .NET Framework would be a better choice than .NET 7. 

New .NET applications should target one of the latest .NET versions. At the time of recording this video, .NET 6 and .NET 7 are the supported platform versions.

But what about .NET Standard?

So we finally have a clear picture of all the .NET Framework, .NET Core, and .NET versions. But how does .NET Standard fit into that picture?

Let’s clear up one of the biggest misconceptions first. Somehow the idea of .NET Standard being some kind of next-generation .NET framework has spread around. That’s completely wrong.

The .NET Standard is a formal specification that different frameworks implement. It describes the API surface a framework has to implement to be compatible with a .NET Standard.

The idea behind .NET Standard was to allow code sharing between projects targeting different frameworks, such as

  • .NET Framework
  • .NET Core
  • Mono
  • Xamarin
  • UWP
  • Unity

and others.

There are different versions of the .NET Standard, with version 2.1 being the latest and final release of the specification. The higher the version number, the more APIs are supported. On the other hand, higher .NET Standards require newer versions of the implementations.

If you still need to share code between older versions of .NET, targeting .NET Standard can still be a viable option today.

If you target the .NET Standard today, I suggest targeting version 2.0 because it is implemented in .NET Core, starting from .NET Core 2.0 and .NET Framework 4.6 and later.

However, .NET Standard is not relevant anymore for modern .NET development.

Beginning with .NET 5 and the unification of .NET, we have a different philosophy and do not need .NET Standard anymore. 

A class library targeting .NET 5 or higher can be shared across all modern .NET application types.

Conclusion

First of all, thanks for sticking around until the end. Versioning is hard and usually less fun than playing with new frameworks every single day. 

However, with more than 20 years of history, .NET is still around today and will be relevant in the future. Therefore, understanding the past, present, and future of .NET makes a lot of sense.

There has been a difficult era beginning with the introduction of .NET Core and .NET Standard in 2016, but since .NET 5 in 2020, I feel like .NET development has never been simpler, and it allows me to be very productive in building applications every single day.

As said before, the future will bring us a new C# and .NET version every year.

If you want to learn more about .NET development, subscribe to my YouTube channel

 

Claudio Bernasconi

I'm an enthusiastic Software Engineer with a passion for teaching .NET development on YouTube, writing articles about my journey on my blog, and making people smile.