Latest in branch 3.0
3.0.3
Released 18 Feb 2020
(6 years ago)
Software.NET
Version3.0
Status
End of life
Initial release3.0.0
23 Sep 2019
(6 years ago)
Latest release3.0.3
18 Feb 2020
(6 years ago)
End of life03 Mar 2020
(Ended 6 years ago)
Release noteshttps://github.com/dotnet/core/blob/main/release-notes/3.0/3.0.3/3.0.3.md
Source codehttps://github.com/dotnet/core/tree/v3.0.3
Documentationhttps://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-3.0
Downloadhttps://dotnet.microsoft.com/en-us/download/dotnet/3.0
.NET 3.0 ReleasesView full list

What Is New in .NET Core 3.0

.NET Core 3.0 is a major release focused on expanding the platform's capabilities for desktop and cloud applications. It introduces Windows Desktop support, significant performance gains, and a more complete set of platform APIs. This update makes .NET Core a viable and powerful option for a much broader range of applications.

Category Key Changes
New Features Windows Desktop (WinForms, WPF), C# 8.0, .NET Standard 2.1, New JSON APIs, IoT Default Support
Performance Improved JIT, Hardware Intrinsics, Garbage Collection, Tiered Compilation, HTTP/2
Deployment Single-File Executables, Docker Image Updates, Assembly Unloading
Security Cryptographic Key Import/Export, TLS 1.3 & OpenSSL 1.1.1 on Linux
Deprecated Some Windows Compatibility Pack APIs, Older Runtime Identifiers (RIDs)

What desktop application support was added?

.NET Core 3.0 brings full support for building Windows Desktop applications using Windows Presentation Foundation (WPF) and Windows Forms (WinForms). This is a monumental shift, allowing these mature UI frameworks to run on the modern, cross-platform .NET Core runtime.

In practice, you can now create new WPF/WinForms projects that target .NET Core or migrate existing .NET Framework desktop apps. This unlocks the performance improvements, side-by-side deployment, and newer language features of .NET Core for a massive ecosystem of desktop software.

Which C# language features are included?

.NET Core 3.0 ships with full support for C# 8.0. This introduces several new ways to write cleaner, more expressive code. The most significant features are nullable reference types, async streams, and ranges/indices.

Nullable reference types help eliminate null reference exceptions by making nullability an explicit part of your type declarations. Async streams (IAsyncEnumerable<T>) allow you to asynchronously iterate over data streams. Ranges and indices provide a succinct syntax for slicing data.

// Async Streams
await foreach (var item in asyncStream)
{
    Console.WriteLine(item);
}

// Ranges and Indices
string[] words = new string[] { "The", "quick", "brown", "fox" };
var subArray = words[1..^1]; // contains "quick", "brown"

How was performance improved?

The runtime and core libraries received substantial performance optimizations. The Just-In-Time (JIT) compiler got smarter with better inlining and code generation. Hardware intrinsics allow you to directly target CPU-specific instruction sets like SSE4 and AVX2 for extreme performance in numerical computing.

Tiered compilation is now enabled by default, which means the runtime can quickly compile methods and then recompile them with more optimizations if they are used frequently. Garbage collection was also tuned for better throughput, especially for large memory heaps common in server workloads.

What are the new deployment options?

You can now publish a truly single-file executable. This bundles all your application dependencies, including the .NET Core runtime itself, into one file that users can run directly. This simplifies distribution immensely.

Assembly unloading is now possible with the introduction of AssemblyLoadContext. This is crucial for scenarios like plugins or scripting, where you need to load and then unload code to free up memory. The official .NET Core Docker images were also updated to use .NET Core 3.0.

What new APIs are available?

The platform expanded its API set with the adoption of .NET Standard 2.1, adding thousands of new members. A new set of high-performance JSON APIs in System.Text.Json is introduced for serialization and deserialization, offering a modern alternative to Newtonsoft.Json.

Cryptography got a boost with support for importing and exporting asymmetric keys from various formats without a platform-specific X509Certificate. Support for TLS 1.3 and OpenSSL 1.1.1 on Linux enhances secure communication capabilities.

// New System.Text.Json APIs
var jsonString = JsonSerializer.Serialize(weatherForecast);
var weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(jsonString);

FAQ

Can I migrate my existing .NET Framework WPF app to .NET Core 3.0?
Yes, this is a primary goal of the release. You'll use a migration tool to update your project file and dependencies. Most code should work, but you'll need to test for APIs that were part of .NET Framework but not in .NET Core, potentially using the Windows Compatibility Pack.

Should I use System.Text.Json or stick with Newtonsoft.Json?
For new projects, System.Text.Json is a great default choice due to its performance and integration. For existing projects heavily invested in Newtonsoft.Json's feature set, a migration may not be immediately necessary unless you need the performance benefits.

What is the main benefit of single-file publish?
It dramatically simplifies application distribution. Instead of a folder full of DLLs and an EXE, you distribute one file. The executable extracts its contents to a temporary directory on first run, making it completely self-contained and easy for end-users to manage.

How do hardware intrinsics help my application?
They allow C# code to directly use processor-specific SIMD instructions (like those in SSE or AVX2). This can lead to massive performance gains in math-heavy, vectorized operations found in graphics, machine learning, and scientific computing, bringing C# closer to native code speeds for these tasks.

Is TLS 1.3 supported on Windows?
Yes, but with a caveat. .NET Core 3.0 adds support for TLS 1.3 on Windows 10 builds 19628 and later. On Linux, it's enabled when using OpenSSL 1.1.1 or later. The runtime will use the highest available protocol version negotiated between the client and server.

Releases In Branch 3.0

VersionRelease dateRuntimeSDKSecurity
3.0.318 Feb 2020
(6 years ago)
3.0.33.0.103
3.0.214 Jan 2020
(6 years ago)
3.0.23.0.102 has security advisories
3.0.119 Nov 2019
(6 years ago)
3.0.13.0.101
3.0.023 Sep 2019
(6 years ago)
3.0.03.0.100
3.0.0-rc116 Sep 2019
(6 years ago)
3.0.0-rc1-19456-203.0.100-rc1-014190
3.0.0-preview904 Sep 2019
(6 years ago)
3.0.0-preview9-19423-093.0.100-preview9-014004
3.0.0-preview813 Aug 2019
(6 years ago)
3.0.0-preview8-28405-073.0.100-preview8-013656
3.0.0-preview723 Jul 2019
(6 years ago)
3.0.0-preview7-27912-143.0.100-preview7-012821
3.0.0-preview612 Jun 2019
(7 years ago)
3.0.0-preview6-27804-013.0.100-preview6-012264
3.0.0-preview506 May 2019
(7 years ago)
3.0.0-preview5-27626-153.0.100-preview5-011568
3.0.0-preview418 Apr 2019
(7 years ago)
3.0.0-preview4-27615-113.0.100-preview4-011223
3.0.0-preview306 Mar 2019
(7 years ago)
3.0.0-preview3-27503-53.0.100-preview3-010431
3.0.0-preview229 Jan 2019
(7 years ago)
3.0.0-preview-27324-53.0.100-preview-010184
3.0.0-preview104 Dec 2018
(7 years ago)
3.0.0-preview-27122-013.0.100-preview-009812