C# WPF App .NET Framework 4.8 vs .NET Core 3.1 vs .NET 5.0 [closed] C# WPF App .NET Framework 4.8 vs .NET Core 3.1 vs .NET 5.0 [closed] wpf wpf

C# WPF App .NET Framework 4.8 vs .NET Core 3.1 vs .NET 5.0 [closed]


.Net Framework 4.x

Is not going to be updated (except fixes). It is a dead end nowadays. Going this way can bring you stability and compatibility with many libraries, but will keep you back from receiving new features.

.Net 6.0 (a new name for .net core 6)

Coming out this year is the de facto continuation of the .Net efforts. It will join what was available in .net framework and makes sense to keep alive in the .net core world. Although it started as a multiplatform reimplementation of the framework it now became the ultimate dot net for windows too.

I would expect this to get the most traction.

.Net 5.0

Was a former candidate for delivering the unification that was finally delivered in 6.0 but couldn't be done in 5.0 timeline because of the pandemic.

.Net 3.x

Is not complete feature wise, and cannot compete with everything that was in .net framework.

If I had to choose I would either go with 5.0 or, 6.0 release candidates, depending on when your product is supposed to be released.


In most cases you should use the latest version of .NET (currently it's .NET 5) when creating new applications. .NET Framework has the advantage of being installed in modern Windows by default, but lacks new features and improvements. Also .NET Framework templates are in legacy format, so if you would need the new features later, you would have to convert your projects. On the other hand, if you start from .NET templates, you can just add .NET Framework support later without conversion..NET Core 3.1 is an LTS branch which is mostly relevant if your application must work for several years without changes.

Every major .NET version includes major performance improvements, so it is reasonable to use the latest version even if you do not need new features.

Most NuGet packages are nowadays supporting .NET Standard 2.0, so they are compatible with all listed runtimes. The packages which only support .NET Framework are likely abandoned and should not be used in new applications. Some packages have even dropped .NET Standard support and are targeting latest .NET exclusively (such as upcoming Entity Framework Core 6). As time goes more and more packages will follow.