.NET 6 Release Candidate (RC) 2 has been released by Microsoft, almost a month after the release of RC 1. Release Candidates are preview versions of the actual product, rolled out to users so they can test it beforehand. This also gives Microsoft time to fix any major or minor issues that they missed through feedback.
RC 2 is the second release out of the two Release Candidates planned by Microsoft. This means that the next time we will be talking about .NET 6, the stable version will be available for the public to download.
This release is currently available to use on Linux, Windows, and macOS. Moreover, Microsoft claims that it has been tested with Visual Studio 2022 Preview 5.
Table of contents
.NET 6 Release Date
With the announcement of Release Candidate 2, Microsoft has also announced the release date(s) for the stable version of .NET 6.
.NET 6 is scheduled to be released at the .NET Conf – a 3-day event that will be held between 9th and 11th November 2021.
Although .NET 6 will be compatible with Visual Studio 2022, it will not be compatible with its predecessors. Similarly, it will be compatible with MS Build 17.x, but not with its predecessors.
Since .NET 6 is nearing its final stable build, it has a lot to offer in terms of new features and updates. Let’s see what those are.
What’s new in .NET 6 Release Candidate 2
There are a lot of new features in .NET 6 RC 2. However, we will only be discussing a few significant ones.
C# 10 is an advancement in the language, which Microsoft calls the “evolution of existing concepts and capabilities.” Moreover, a few features have also been added such as “global using” and file-scoped namespaces.
You can view the examples of the reiterated C# 10 here.
Record structs have been added for completeness so that structs can enjoy the same record benefits as classes, thanks to C# 10. Microsoft has aligned struct records with
ValueTuple the same as the class records. This has made the record struct properties mutable by default, while the record class properties are immutable.
Microsoft says that the asymmetric mutability behavior between record structs and record classes will likely be met with surprise and maybe even distaste with some readers, depending upon their preferences.
If you prefer immutable behavior with record structs, you can have it by adding a
You can use
Global using it to specify a namespace that you would like available in all of your source files as if it was declared in each one. It can also be used with
using static and aliasing. This feature enables a common set of
using declarations to be available, and by extension, for many
using lines to no longer be needed. This is most relevant for the platform namespaces, but can be used for any namespace.
Here are a few examples:
global using System;
global using static System.Console;
global using E = System.Environment;
File-scoped namespace declaration
The file-scoped namespace declarations is another C# 10 feature that is used to reduce indentation and line count. As opposed to the three-line structure, you can now use
namespace as a single file.
Namespaces are not compatible with top-level statements. Top-level statements exist within the top-level namespace. This also means that if you add additional methods to the
Program class, using the
partial class syntax that the partial
Program class needs to also be in the top-level namespace.
MacOS and Windows Arm64 Update
Microsoft s also working to add macOS and Windows Arm64 support. However, they are not finished with it yet. The following capabilities have been added thus far:
- .NET 6 RC2 enables Arm64 + x64 co-existence by installing Arm64 and x64 builds to different locations. Until now, Arm64 and x64 builds overwrite each other, which led to general sadness.
- You need to uninstall all .NET builds and start from scratch (on macOS and Windows Arm64 machines) to adopt .NET 6 RC2+. This includes Arm64 and x64, .NET 6 and pre-.NET 6.
- Pre .NET 6 builds are not yet ready to install.
- The CLI enables you to use the Arm64 SDK to do Arm64 AND x64 development (assuming you have the required Arm64 and x64 runtimes installed). The same is true in reverse.
- We want people to just use the Arm64 SDK since it will be a better experience (native architecture performance; one SDK to maintain). We will continue to improve the product to make this model the easy choice for most developers.
- For the SDK, we will only support .NET 6+ on Arm64. Earlier SDK builds will be blocked on Arm64.
- For runtimes, we will support all in-support versions, Arm64 and x64.
- .NET 6 RC2 delivers the bulk of the final .NET 6 experience for Arm64 (including x64 emulation).
- We hope to update .NET Core 3.1 and .NET 5 runtimes to align with .NET 6 RTM (both in time and with the technical requirements). That’s still TBD.
- RC2 nightly builds are currently broken, so you will need to wait a couple more weeks until we ship RC2 to try this all out.
You can read more about the new features and improvements in Release Candidate 2 on Microsoft’s announcement page.
Download .NET 6 Release Candidate 2
Use the direct download links below to download the .NET 6 Release Candidate 2 Runtime and SDKs according to your operating system and architecture:
More download and install options here.
Install .NET 6 Release Candidate 2
You can begin by downloading the right .NET version for you from the links above and then execute it to begin the installation process.
Once you have installed it, all your applications will run using the new build as the previous version will be replaced.
- Run the installation package by double-clicking it (in the case of macOS and Windows), and then clicking Install on the installation wizard.
- The installation will now begin. It does not take much time nor does it require a restart. Click Close once it has been installed successfully.
You have now installed the .NET. You may check which .NET version is running by typing in the following command in Command Prompt:
wmic product get description | findstr /C:.NET
Since this is a Release Candidate we suggest that you do not install .NET 6 RC 2 in a production environment, as it may still have a few bugs. Meanwhile, you can try it out in a test environment to check out the cool new features and support.