Microsoft Ships .NET Core 2.2 and Previews .NET Core 3.0
Amid the hubbub caused by Microsoft open sourcing WPF, WinForms and other desktop tech, the company also shipped the final version of .NET Core 2.2 and unveiled the first preview of .NET Core 3.0.
.NET Core is Microsoft's modernization of the aging, Windows-only .NET Framework, using a modular approach to take components open source and cross-platform. Those components include ASP.NET Core and Entity Framework Core, which have also shipped in their v2.2 editions.
Microsoft said the .NET Core 2.2 update features diagnostic improvements to the runtime, support for ARM32 for Windows and Azure Active Directory for SQL Client, while noting that "The biggest improvements in this release are in ASP.NET Core."
That Web-dev-oriented offering features a host of improvements, ranging from better Open API (Swagger) library integration to various performance enhancements.
"The main theme for this ASP.NET Core release was to improve developer productivity and platform functionality with regard to building Web/HTTP APIs," said Microsoft's Damian Edwards in a blog post. "As usual, we made some performance improvements as well."
Meanwhile, Entity Framework Core 2.2, providing object-database mapping functionality, sees hundreds of bug fixes, in addition to new features. Microsoft's Diego B Vega detailed new functionality such as:
- Spatial data support: This is used to represent the physical location and shape of objects).
- Collections of owned entities: This introduces one-to-many associations for model ownership, along with the existing one-to-one associations.
- Query tags: These simplify the correlation of LINQ queries in code with generated SQL queries captured in logs.
For .NET Core 2.2 proper, developers can go here to learn about:
- Tiered compilation: This is a feature that lets the runtime more adaptively use the Just-In-Time (JIT) compiler to get better performance during both startup and throughput.
- Injecting code prior to Main: .NET Core now lets developers inject code prior to running the Main() method via a Startup Hook. "Startup hooks make it possible for a host to customize the behavior of applications after they have been deployed, without needing to recompile or change the application."
- Windows ARM32: The team will add support for Windows ARM32, just like the Linux ARM32 support that shipped in .NET Core 2.1. "Windows has had support for ARM32 with Windows IoT Core for some time," Microsoft said. "As part of the Windows Server 2019 release, ARM32 support was also added for Nanoserver. .NET Core can be used on both Nanoserver and IoT Core." However, problems were encountered that prevented the publishing of .NET Core builds for WindowsARM32 in this update, and it's now planned for .NET Core 2.2.1, shipping early next year.
Finally, .NET Core 3.0 Preview 1 sees new functionality to create desktop apps with technologies like WPF and Windows Forms. Support for those Windows-only frameworks is being added to the previous capabilities for Web APIs, Internet of Things (IoT) projects and console applications.
".NET Core 3 is a major update which adds support for building Windows desktop applications using Windows Presentation Foundation (WPF), Windows Forms, and Entity Framework 6 (EF6)," Microsoft's Rich Landers said in a blog post. "ASP.NET Core 3 enables client-side development with Razor Components. EF Core 3 will have support for Azure Cosmos DB. It will also include support for C# 8 and .NET Standard 2.1 and much more!"
That will need to be done with Visual Studio 2019, however, as VS 2017 can't be used for .NET Core 3.0 projects. Luckily, the company just this week also shipped Visual Studio 2019 Preview 1.
.NET Core 3 Preview 1 introduces a host of new features and functionality, including applications being built with executable (.exe) files by default; a local dotnet tools scenario to add to the global tools scenario introduced in .NET Core 2.1; ranges and indices; an in-box JSON Reader, Async streams; cryptography enhancements and much more.
Lander pointed to release notes for more information, but there didn't seem to be any release notes available there, which several developers complained about.
More information is coming, though, said Lander: "We'll be releasing more detailed posts on .NET Core 3 in the coming weeks, which will also include an update on .NET Standard 2.1, which didn't make it into Preview 1 yet."
Lander emphasized that developers using the traditional .NET Framework shouldn't feel pressured to port existing applications to .NET Core. However, the company has advised developers that .NET Core will see many more new features introduced than the Windows-only .NET Framework will, and recommends all new projects start on the newer platform if possible.
.NET Core development takes place in the open on GitHub.
David Ramel is the editor of Visual Studio Magazine.