.NET 5 : How Microsoft merge .NET Framework and .NET Core
Tags: dotnet, core, framework
Published: 2020-11-25 05:35:12

Yay, finally [.NET 5 is GA now](https://devblogs.microsoft.com/dotnet/announcing-net-5-0/)!! Then my friends ask me several questions.

- Is it .NET Framework v5?
- What happens to .NET Core v4?
- Does it mean we can run .NET Framework on Linux?

To answer these questions, let's look back what is .NET Framework and .NET Core

# .NET Framework

Microsoft released the initial .NET Framework version 1.0 back in 2002, by which you can develop applications run on Windows. The framework consists of runtime, SDK, libraries and languages such as C# and VB.NET (and it supports F# at later version). 

Even though there are many major and minor versions, there are only 3 versions from my point of view.

- .NET Framework 1x
- .NET Framework 2x 
- .NET Framework 4x

.NET Framework 3 and 3.5 are extension of .NET Framework 2x so they are compatible. 

Checkout [.NET Framework version history](https://en.wikipedia.org/wiki/.NET_Framework_version_history) for detail version history.

The latest and the last version of .NET Framework is .NET Framework 4.8

# .NET Core

As Microsoft becomes cross-platform company, .NET also supports non-Windows OS, such as Linux and macOS. As we couldn't simply run .NET Framework on other OS, Microsoft released new framework named .NET Core.

The initial version was released back in 2016 as .NET Core 1.0. It evolved rapidly and reached the version of 3.1 in Dec 2019.

# Xamarin/Mono

.NET is also runs on mobile platforms like iOS and Android. .NET is ported mobile platform as [Mono](https://en.wikipedia.org/wiki/Mono_%28software%29) back in 2004, and it becomes [Xamarin](https://dotnet.microsoft.com/learn/xamarin/what-is-xamarin) later on.

# .NET Standard

As there are multiple variation of .NET, Microsoft defines specification of the APIs as ".NET Standard". So if you develop a library as .NET Standard 1.3, then it can be used in .NET Framework, .NET Core and Xamarin versions which support .NET Standard 1.3 or later.

# .NET 5

.NET Core is for cross-platform, which includes Windows of course. But .NET Framework only supports Windows. .NET Core also supports mobile platforms from now on. That's why we don't need different variations of .NET anymore and Microsoft finally decided to support only .NET core and stop adding new features to .NET Framework. 

As there will be only one .NET variation, they rename it to .NET, which is basically .NET Core. 

So .NET 5 is next version of .NET Core. 

Then you wonder why they skip .NET Core version 4? I don't know the exact reason but I can imagine they don't want people confuse it with .NET Framework v4. And also it's easy to hit search keyword.

I believe it's same strategy to skip Windows 9 which search engine may hit Windows 95/98/98SE.

# Summary

.NET 5 is the next version of .NET Core which runs on cross-platform. Windows, macOS, Linux, iOS, Android, IoT, Gaming, etc.

I believe now is the best time to start/restart learning .NET as you only need to learn one .NET.

Of course, .NET supports variety of language yet. C# is the best IMO.

# Reference

[Announcing .NET 5.0](https://devblogs.microsoft.com/dotnet/announcing-net-5-0/)
[.NET official page](https://dotnet.microsoft.com/)
[Wiki: Mono software](https://en.wikipedia.org/wiki/Mono_%28software%29)
[Wiki: .NET Core](https://en.wikipedia.org/wiki/.NET_Core)
[Wiki: .NET Framework](https://en.wikipedia.org/wiki/.NET_Framework)