.NET 7 Finally Arrives as Unifying Microsoft Development Platform
.NET 7 has finally done what .NET 5 was supposed to do in 2020: crown Microsoft's years-long effort to unify disparate development products with "just one .NET going forward."
On Tuesday, Nov. 8, the opening day of the three-day .NET Conf online event, .NET 7 reached General Availability status as Microsoft's open source, cross-platform development platform.
".NET 7 brings your apps increased performance and new features for C# 11/F# 7, .NET MAUI, ASP.NET Core/Blazor, Web APIs, WinForms, WPF and more," Microsoft said in an announcement post. "With .NET 7, you can also easily containerize your .NET 7 projects, set up CI/CD workflows in GitHub actions, and achieve cloud-native observability."
That announcement capped a unification push heralded back in 2014 when Microsoft announced the open sourcing of old, proprietary, Windows-only .NET Framework tech, called .NET Core. The project gained traction with 2019's .NET Core 3.x series of iterations, which started to make serious inroads into supplanting the .NET Framework. That series was an especially important early step in Microsoft's campaign to enable developers to build all types of apps -- cloud, desktop, mobile, web, AI, IoT and more -- on the same Base Class Library (BCL), runtime and compilers.
The goals of .NET 5 were to:
- Produce a single .NET runtime and framework that can be used everywhere and that has uniform runtime behaviors and developer experiences.
- Expand the capabilities of .NET by taking the best of .NET Core, .NET Framework, Xamarin and Mono.
- Build that product out of a single code-base that developers (Microsoft and the community) can work on and expand together and that improves all scenarios.
However, in August 2020 Microsoft said that unification effort would be postponed until .NET 6 in November 2021. Then, amid the pandemic and development problems, components like .NET MAUI (.NET Multi-platform App UI -- or "the best of Xamarin and Mono") "slipped the schedule" and missed the debut of .NET 6, so the grand consolidation was again postponed for a year, this time to .NET 7.
Now, at long last, all the code -- which has been production ready for a while now -- has been tested, polished and wrapped up in a Standard Support package, officially supported for 18 months as opposed to the 36 months of support that comes with Long-Term Support (LTS) offerings like .NET 6.
In announcing the General Availability of .NET 7 at the beginning of this week's .NET Conf 2022 online event, Microsoft listed three key highlights:
- Performance improvements in .NET 7 allow developers to work efficiently with fastest version of .NET ever.
- .NET 7 builds upon the platform's unification journey, with improvements to .NET MAUI, enhanced support of .NET apps on ARM64, and a partnership with Canonical that includes .NET with Ubuntu.
- .NET 7 empowers developers to easily build modern, cloud native apps with features like built-in container support for the .NET SDK, Microsoft Orleans 7.0, and observability integrations.
- Additions in C# 11 and F# 7 simplify the developer experience, allowing developers to accomplish more with less code.
The announcement further detailed the major themes of .NET 7:
- One BCL
- New TFMs
- Native support for ARM64
- Enhanced .NET support on Linux
- Continued performance improvements
- Developer productivity enhancements, like container-first workflows
- Build cross-platform mobile and desktop apps from same codebase
- .NET is for cloud-native apps
- Easy to build and deploy distributed cloud native apps
- Simplify and write less code with C# 11
- HTTP/3 and minimal APIs improvements for cloud native apps
- Numerous perf improvements
As most of that stuff has already been announced and explained, there won't be many new features or much new functionality to trumpet at .NET Conf, where Microsoft will mostly review and demo the new platform. With that in mind, here's a handy timeline review to summarize how the framework has evolved in the context of Microsoft announcements:
- Announcing .NET 7 Preview 1: .NET 7 builds on the foundation established by .NET 6, which includes a unified set of base libraries, runtime, and SDK, a simplified development experience, and higher developer productivity. Major areas of focus for .NET 7 include improved support for cloud native scenarios, tools to make it easier to upgrade legacy projects, and simplifying the developer experience by making it easier to work with containers.
- Announcing .NET 7 Preview 2: The second preview of .NET 7 includes enhancements to RegEx source generators, progress moving NativeAOT from experimental status into the runtime, and a major set of improvements to the "dotnet new" CLI experience.
- Announcing .NET 7 Preview 3: The third preview of .NET 7 includes enhancements to observability, startup times, codegen, GC regions, native AOT compilation, and more.
- Announcing .NET 7 Preview 4: The fourth preview of .NET 7 includes enhancements to observability in the .NET implementation of OpenTelemetry, the addition of properties to track microseconds and nanoseconds in date and time structures, new metrics for caching extensions, performance-boosting "on stack replacement, APIs" to work with .tar archives, and additional features as part of an ongoing effort to improve the performance of and add features to regular expressions in .NET 7.
- Announcing .NET 7 Preview 5: This preview of .NET 7 includes improvements to Generic Math which make the lives of API authors easier, a new Text Classification API for ML.NET that adds state-of-the-art deep learning techniques for natural language processing, various improvements to source code generators and a new Roslyn analyzer and fixer for RegexGenerator and multiple performance improvements in the areas of CodeGen, Observability, JSON serialization / deserialization and working with streams.
- Announcing .NET 7 Preview 6: This preview of .NET 7 includes improvements to type converters, JSON contract customization, System.Formats.Tar API updates, constraints to .NET template authoring, and performance enhancements in the CodeGen area.
- Announcing .NET 7 Preview 7: This preview of .NET 7 includes improvements to System.LINQ, Unix file permissions, low-level structs, p/Invoke source generation, code generation, and websockets.
- Announcing .NET 7 Release Candidate 1: This is the first of two release candidates (RC) for .NET 7 that are supported in production.
- Announcing .NET 7 Release Candidate 2: Today we announce .NET 7 Release Candidate 2. This is the final release candidate (RC) for .NET 7 and is supported in production.
In that final post, Microsoft highlighted what's new with specific areas of .NET 7, including C#, libraries and the SDK:
C# 11: C# 11 is the latest version of C# that is now available in .NET 7. We design and develop C# in the open. You can join us on the CSharpLang repo to see the latest C# feature proposals and meeting notes. Once work is planned you can monitor progress through our Feature Status page. To learn more about C# 11, check out the following:
Libraries: The .NET libraries are constantly improving. New APIs containing brand new functionality is regularly added. Performance improvements are being made to existing APIs, providing you with benefits by simply upgrading. Completely new libraries are being made to assist your daily jobs-to-be-done. Many .NET library enhancements are included in these blogs, but don’t forget to also check out these library deep dives:
SDK: Each .NET release has a plethora of improvements to the .NET SDK which includes the core functionality to create, build, and manage your .NET projects. Many enhancements were already included in previous preview blogs that you can read up on. To read more about new SDK features, see the following:
This week's .NET Conf, under the direction of the .NET Foundation, will present sessions on .NET 7, .NET MAUI, Blazor, Entity Framework and more. As the above graphic depicting an informal Twitter poll indicates, .NET 7 is garnering the most interest.
The at-a-glance schedule for the Tuesday-through-Thursday event is:
- Day one is all about the big news, .NET 7! Join the .NET team on all the new things you can do with the latest release.
- Day two is where we dive deeper into all the things you can do with .NET and our 24 hour broadcast begins.
- Day three continues our all day and night broadcast with speakers around the world in their own time zones.
David Ramel is an editor and writer for Converge360.