Updated on September 03 2020 • Martin Shishkov

Notes on .NET Ecosystem

My notes on clearing some confusion about the .NET Ecosystem as a whole

.NET Ecosystem (or .NET Echo Chamber) is a really large set of tools for building stuff. All of the terms involved can confuse you so I’m going to map out a birds view of the whole picture.

There are keywords like .NET Framework, .NET Core, .NET Standard, .NET 5, Mono, Xamarin, runtimes and more.

Latest Versions as of 03.09.2020

.NET Framework 4.8
.NET Core 3.1
.NET Standard 2.1
Mono 6.4
Xamarin iOS / Android 12.6 / 10.0
.NET (.NET Core vNext) 5 Preview 8

What's common between all of these platforms?

You can write latest and preview versions of C#, F#, Visual Basic and many other .NET languages in all platforms.

What do they mean when they say .NET?

It can get really confusing because the term '.NET' is used in a lot of places and when someone refers to .NET it can interchangeably mean .NET Ecosystem, .NET Stack or .NET Echo Chamber. Most commonly when someone refers to .NET he means the APIs that the BCL provides, the CLR and the languages C#, F# etc.

What is .NET Framework?

.NET Framework is a platform that runs on Windows environments only. It was the first and original .NET implementation. On a single machine you can have only major versions of .NET Framework installed side by side. The platform comes with .NET Framework Class Library (or BCL - Base Class Library) which is a really large collection of functions at your disposal and CLR - Common Language Runtime that is used to run apps targeting .NET Framework. Until .NET Core 3.0 you could create WinForms apps only in .NET Framework since these kind of projects depend on Windows APIs.

Until recently the only reason you would probably want to target .NET Framework is for building WinForms apps. However since .NET Core 3.0 and .NET 5 coming up this need becomes obsolete as they are bridging the gap and they include WinForms as well.

Microsoft advises using .NET Core 3.1 or .NET 5 for new projects to come.

What is .NET Core?

.NET Core is an overall upgrade of .NET Framework that removes a lot of legacy stuff and it's overall faster platform that runs everywhere. This platform allows you to run whatever versions you wish side by side. Either major or minor - it doesn't matter. Furthermore, apps built on .NET Core can be self-contained, meaning that they come with their corresponding target .NET Core version. The .NET Core comes with Core Common Language Runtime and again with the BCL.

.NET Core doesn't require Visual Studio to develop applications - you can just as good use VS Code or some other IDE.

The last .NET Core release is 3.1 and it will be long term supported (LTS).

What are Mono and Xamarin?

Mono and Xamarin are implementations of .NET that run on Linux devices. These are mainly used for building mobile apps for iOS and Android.

What is .NET Standard?

As the name goes - it's a standard. The .NET Standard was introduced to unify APIs across different platforms in order to ease code sharing between them.

You can view .NET Standard as an interface and .NET Framework, .NET Core, Mono/Xamarin as it's concrete implementations.

There's actually a really cool interactive table at https://dotnet.microsoft.com/platform/dotnet-standard . There you can see for example that the first .NET Standard version is 1.1 and .NET Framework is .NET Standard compatible since 4.5

Then what the hell is .NET 5?

.NET 5 comes after .NET Core 3.0. In fact .NET 5 has another name - .NET Core vNext. NET 5 is merging all of the above platforms into a single one so that you can have only one runtime that runs everything everywhere.

At the time of this writing .NET 5 is in Preview and it's planned to be officially released in November 2020. NET 5 is a BIG thing for the .NET community.