Microsoft has released .NET Core 3.1 – a significant milestone as, unlike version 3.0, it is a long-term support (LTS) release, suggesting that the company believes it's fit for extended use. It is accompanied by Visual Studio 16.4, also an LTS release.
Microsoft dropped the veil on .NET Core 3.0 a couple of months ago, a major release with support for C# 8.0, Windows desktop applications and the ability to run on Arm processors including Raspberry Pi. However, .NET Core 3.0 is only supported for three more months, whereas 3.1 will be supported for three years – so this is the one you should use in anger. The support policy is explained here.
The new version runs on Windows, macOS and Linux and has new features including C++/CLI (.NET components written in C++).
Windows desktop developers can now use .NET Core for WPF (Windows Presentation Foundation) and Windows Forms applications. That said, there are a few issues with Windows Forms and .NET Core. The Windows Forms designer is still in preview and has to be installed separately. Only C# is supported, not Visual Basic. Further, Microsoft has had a change of heart about some Windows Forms controls that worked in .NET Core 3.0. These are old controls like DataGrid (replaced by DataGridView) and MainMenu (replaced by MenuStrip).
Principal program manager Richard Lander called this "an unfortunate breaking change" and said that these controls should never have been included in the .NET Core release since they are "not aligned with creating modern applications."
Along with .NET Core, there are also new releases for ASP.NET Core and Entity Framework Core, making this an important set of updates for .NET Core developers. Blazor for WebAssembly, a framework for running C# directly in a web browser by compiling it to WebAssembly, is updated but remains in preview – we are promised "a stable release at a future date".
Visual Studio 2019 16.4 is necessary for using .NET Core 3.1. It also brings new features of its own, including a couple that have been promoted from optional extensions. These are publishing to GitHub directly from the Team Explorer tool, and a Container Tool window that lets you manage Docker images and containers.
Developers using the cross-platform mobile framework Xamarin Forms get Hot Reload, which lets you make changes to a XAML-defined user interface and see a running application update with the changes.
There is also a preview feature called Vertical Document Tabs, which is exactly what it sounds like: the ability to have tabs arranged vertically rather than across the top of the editor window. This is handy if you have lots of tabs and a wide screen.
C++ developers get a new memory error detector called Address Sanitizer, though this is described as "experimental". There is also integration with the LLVM tool Clang-Tidy for help finding style violations and programming errors, and C++ Build Insights, a tracing tool for builds that lets you diagnose build issues or performance problems.
It is the usual Microsoft thing. On the one hand, here is a release of both Visual Studio and .NET Core that seems ready for business, complete with long-term support. On the other hand, it is still peppered with features that are not quite there yet. For those keen to get going with .NET Core, though, this release sounds like a good moment to jump in. ®