Today at the Build Developer Conference, Microsoft announced that the next release of .NET Core will support Windows desktop application development. This means developers can target UWP, WPF and Windows Forms from .NET Core apps. While these GUI frameworks remain Windows-only, this support enables developers to more easily reuse code for application logic.
The three supported languages of .NET Core 2 (C#, VB, and F#) will remain supported in .NET Core 3 and all of them can be used to build Windows desktop applications. While a preview of .NET Core 3 is scheduled to be released yet in 2018, the final version is not expected until 2019.
So why would developers want to use .NET Core versus the existing .NET Framework for Windows? There are actually several reasons. First, unlike the .NET Framework, .NET Core apps are completely independent of one another- so side-by-side installations of .NET Core apps that use different versions of .NET Core are entirely possible. A new option with .NET Core 3 will be to produce a single executable that combines your app with the .NET Core runtime required to run it.
Existing .NET applications that wish to migrate to .NET Core 3 will require some rework. They will need to be recompiled to target .NET Core 3, and project files will similarly need to be updated. According to Microsoft’s Rich Lander, at this point the plan is for dependencies to not need a retarget and recompile cycle.
Several developers reacting to this announcement inquired about the possibility of seeing WPF and WinForms open sourced and released on GitHub. Interestingly, this request was not dismissed out of hand by Lander - the possibility open that Microsoft may do this in the future. It seems the community’s primary desire is to expand and modernize these GUI toolkits for Windows rather than port them to macOS or Linux.