.Net standard vs .Net core vs .Net framework, what are the differences?

In this post I will go through the fundamentals of the different types of .Net. There is a lot of confusion on what the different types support, and which frameworks can be consumed from one another. They are all 3 used to develop .Net applications and all support the languages VB, C# and F#.

.Net framework

The .Net framework is the oldest of the 3. Previously people would just say .Net and this would be what they were referring to. The other two (core and standard) did not even exist - they came into existence much later (2016).

However .Net framework only runs on the windows platform, which it was built for. You cannot use the .Net framework outside of the Windows platform. It used to be strongly tied to Microsoft products such as the use of IIS for hosting web applications.

These days .Net Framework is still used to create web applications but .Net core has become an alternative. However .Net framework is required if you wish to develop WPF, Win forms or apps for windows.

.Net core

.Net core was made for Microsoft (C#, .Net and Asp.net) to get off the windows platform. It is an open source project and runs on both macOS and Linux - of course it also runs on windows. .Net core enables us to create, deploy and run .Net on other platforms than windows. It does not have built in support for creating desktop applications and is mostly used server side.

.Net standard

.Net Standard was made so that you can create reusable code (nuget packages for example). It can be used in both .Net framework and .Net core. It can be seen here which versions of .Net standard can be consumed by which versions of core and framework. The versions have nothing to do with one another. The fact that core and standard are both at version 2 is just coincidence.

.Net standard has no runtime and cannot be deployed on it's own. So it runs in a .Net core or .Net framework runtime.

Closing notes

Even though Standard and Core are new and interesting there are still many applications still running .Net Framework. However when considering which to use, server licenses may be a big deal - in which case .Net core has an advantage. .Net Core has matured a lot over the years and - it is my assumption that - it is today seen as an equal to the .Net framework.

Did I miss anything? Let me know in the comments!