.NET Core 1.0 launched on November 2014. It runs across Linux, Windows, and macOS operating systems. Additionally, it is a free, open-source development environment for the building of any kind of application such as web, Android, iOS, cloud, and IoT Applications..Net core is maintained by Microsoft as well as the Dot NET community on GitHub.
In .Net core, you can install a new version without worrying about breaking existing applications. Furthermore, apps can easily embed the .NET framework. In the first version, their primary focus was to maintain high-performance web and microservices. In Core 2.0 version, they added many things to simplify the port of web apps, SignalIR, Razor Pages, etc. The latest version is now .Net Core 3.0. In this article, I mention all the improvements and the latest features of the new .Net core. 

Windows Desktop Apps
The highlight of .NET Core 3 is support for Windows desktop applications, specifically Windows Forms, Windows Presentation Framework (WPF), and UWP XAML. You will be able to run new and existing Windows desktop applications on .NET Core and enjoy all the benefits that .NET Core has to offer.
One can assemble Windows desktop applications utilizing Windows Forms and WPF. with the .NET Core 3.0. It supports the use of modern controls and familiar styling from the Windows UI XAML Library (WinUI). It is a piece of the Windows .NET Core 3.0 SDK.
Language improvements C# 8.0
In .Net core 3.0, C# 8.0 is also released, which includes the Nullable reference types. This was already considered in the release of C# 7.0 development but was postponed until the 8.0 version. The main concern of this feature is to help developers avoid unhandled NullReferenceException exceptions. The principle idea allowing variable type definitions to specify whether or not they can have a null value assigned to them. As the technology moves toward more microservices and other cloud-based architectures, other language tools are needed. C# 8.0 expands this vocabulary so that you can use more pattern expressions at increased spots in your code. C# 8.0 introduced Tuple patterns, Positional patterns, Switch expression and Property patterns.
Pattern matching provides tools to give shape-dependent functionality across related but different kinds of data. C# 7.0 introduced syntax for type patterns and constant patterns by using the 'is' expression and the switch statement. These features represented the first tentative steps toward supporting programming paradigms where data and functionality live separately. Consider these features when your data and functionality are separate. Consider pattern matching when your algorithms depend on a fact other than the runtime type of an object. These techniques provide another way to express designs. Also, work on Language enhancements by adding the API features of Async streams and Ranges and indices.
.NET Standard 2.1
.NET Core 3.0 implements .NET Standard 2.1. In total, about 3k APIs are planned to be added in .NET Standard 2.1. A good chunk of them are brand-new APIs while others are existing APIs that we added to the standard in order to converge the .NET implementations even further.
The .NET Standards are the formal specifications of .NET APIs that are intended to be available on all .NET implementations. The motivation behind the .NET Standard is to establish greater uniformity in the .NET ecosystem. To target .NET Standard 2.1, edit your project file and change the TargetFramework property to netstandard 2.1. (If you're using Visual Studio, you need Visual Studio 2019, as Visual Studio 2017 doesn't support .NET Standard 2.1 or .NET Core 3.0.)
Blazor Server
With .NET Core 3.0, you can develop amazing interactive client-side UI with Blazor Server. Blazor Server can be used to write completely new apps or to complement existing MVC and Razor Pages apps. There’s no need to rewrite existing app logic. Blazor is designed to work together with MVC and Razor Pages, not to replace them. You can continue to use MVC and Razor Pages for your server-rendering needs while using Blazor for client-side UI interactions.
Blazor Server is a great way to add client-side functionality to your existing and new web apps using your existing .NET skills and assets. Blazor Server is built to scale for all your web app needs. Blazor WebAssembly is still in preview but is expected to ship in May of next year. In the future, it is expected to continue to evolve Blazor to support PWAs, hybrid apps, and native apps. For now, we hope you’ll give Blazor Server a try by installing .NET Core 3.0.
Deployment of Application
Default executables
Previously, only self-contained deployments would produce an executable. Now .NET Core now builds framework-dependent executables by default. This behavior is new for applications that use a globally installed version of .NET Core. By using framework-dependent, the size of your deployment package is small. You only deploy your app and its dependencies, not .NET Core itself.
Your app can be run by calling the published executable without invoking the dotnet utility directly.
Single-file executables
The executable is self-extracting and contains all dependencies (including native) that are required to run your app. When the app is first run, the application is extracted to a directory based on the app name and build identifier. Startup is faster when the application is run again. The application doesn't need to extract itself a second time unless a new version was used.
Assembly linking
The .NET core 3.0 SDK comes with a tool that can reduce the size of apps by analyzing IL and trimming unused assemblies. Self-contained apps include everything needed to run your code without requiring .NET to be installed on the host computer. However, many times the app only requires a small subset of the framework to function, and other unused libraries could be removed. To enable this tool, add the <PublishTrimmed> setting in your project and publish a self-contained app:
- <PropertyGroup>
- <PublishTrimmed>true</PublishTrimmed>
- </PropertyGroup>
ReadyToRun images
You can improve the startup time of your .NET Core application by compiling your application assemblies as ReadyToRun (R2R) format. R2R is a form of ahead-of-time (AOT) compilation.

Join the conversation! Your thoughts help the community grow.