Build At its Build developer event under way in Seattle, Microsoft announced .NET Core 3.0, coming in 2019, with support for Windows desktop applications.
.NET Core is the open source, cross-platform version of Microsoft’s .NET technology, allowing developers to use languages including C#, F# and Visual Basic on Windows, Mac and Linux. It is a fork of the Windows-only .NET Framework, and Microsoft has continued to develop both versions since the first release of .NET Core in June 2016.
At the time, Microsoft stated that .NET Core was for ASP.NET web applications, as well as being used under the covers by UWP (Universal Windows Platform) applications on Windows 10. Desktop applications would continue to use the .NET Framework.
In addition, Xamarin (also part of Microsoft) has technology based on the older Mono implementation of .NET, targeting iOS, Android, Mac and Linux.
The world is becoming a computer, says CEO of worldwide computer company MicrosoftREAD MORE
It is a confusing picture for C# developers, further complicated by forks in frameworks such as Entity Framework (object-relational database mapping), one targeting .NET Framework and the other .NET Core. Likewise, there is PowerShell (Windows-only) and PowerShell Core (cross-platform), though Microsoft has stated that only the Core version is now under active development.
Now Microsoft will bring .NET Core to Windows Desktop applications, enabling developers to use the same version of .NET on both server and client. .NET Core 3.0, which will be previewed later this year and released in 2019, will support Windows Forms, Windows Presentation Foundation (WPF), and UWP. However these frameworks will remain Windows-only (since they wrap the Windows API). There is no announced plan to support desktop applications on Mac or Linux.
Deployment of .NET Core desktop applications can either use a global install of the .NET Core runtime (similar to how .NET Framework is deployed), or side-by-side deployment so that each application uses its own version of the runtime. “We’re working on new build tools that will bundle your app and .NET Core together as in a single executable, as a new option,” says the announcement
.NET Core will become the default for new desktop applications, suggesting that .NET Framework is on the way out. That said, there will be a .NET Framework 4.8, and Microsoft is integrating both frameworks with UWP, so you will be able to access the entire Windows 10 UWP API (also known as the WinRT API), and host UWP XAML controls in both Windows Forms and WPF applications.
This includes the UWP browser control, based on Edge, which will benefit applications that use an embedded web browser. Of course UWP features do not work on Windows 7, which is a deal-breaker for many applications.
Will .NET Core 3.0 run at all on Windows 7? Lander says "Windows 7 is supported with .NET Core 2. We haven’t locked the OS matrix for .NET Core 3, but we don’t have any specific plans on changing it.", which sounds like yes. Probably.
Porting existing .NET Framework applications to .NET Core will be “straightforward enough that moving to .NET Core 3 is an easy choice for you,” according to Microsoft’s Rich Lander, though developers will be sceptical. The recommendation is to port applications under active development, but to leave completed applications on .NET Framework.
Why bother? Performance of .NET Core is generally better that .NET Framework. What is more important though is to reduce .NET Fragmentation and confusion, and to enable .NET development to move on with fewer legacy constraints. This will help, though Microsoft has more to do. ®