Why move from the regular .NET Framework to .NET Core?

With Microsoft's announcement to only continue development on .Net Core there is little reason not to start looking at .Net Core. The only reasons not to go for .Net Core is if you are highly dependent on "WCF" or "click once deploy" applications, as these are not being moved to .Net Core according to Microsoft. In this post I will describe some of the reasons why you should move to .Net Core.

So besides microsoft choosing .Net Core to be the future, why should you go there? The obvious reason is portability, the ability to deploy your application on another platform than windows - for example Docker containers on linux. This is not only for deployment, development can also be done using linux or MacOS operating systems.

Speed could be a reason to migrate to .Net Core. There are many examples of developers getting higher performance after having migrated to .Net Core. It is simply more lean.

Besides portability the biggest reason - in my opinion - to move to .Net Core is that Package management is a lot simpler. There is no longer a package.config file that you need to keep up to date with your .csproj file, as everything is contained within the project file. I have spent many hours in .Net Framework fixing Nuget package paths and versions that for some reason were not right, but I have spent very little time on Nuget packages in .Net Core. Many do pay tribute to how much easier it is to work with Nuget packages in .Net Core, I think the impact of this is highly underestimated.

In .Net Core it is possible to make self-contained deployments. Here the runtime and the current version are deployed together with your application, which means they do not share this with other applications on the machine. With .Net Framework your application relies on what is installed on the machine you deploy to.

They are not that different

Working with .Net Core is not that different from .Net Framework, in fact when I have solutions open in both frameworks I rarely think of which I am currently working in.

I would suggest migrating applications that are easy to migrate to .Net Core first. Some applications depend on old legacy DLLs that have not been ported to .Net core or .Net standard. Which means if your application depends on framework DLLs these will have to be ported first.

However there is no rush to migrate everything. Microsoft will continue to support .Net framework on windows for many years to come, as there are many applications still using .Net framework and there will be for a long time. The only drawback I see of .Net Core is the time it takes to migrate and of course if you lack features such as WCF, click once deploy or rely on .Net Framework DLLs with no alternatives.

Let me know if you think there are more reasons to move to .Net Core, or any reasons not to?