Breaking Changes coming your way for ASP.NET Core 3.0

Microsoft is in the process of releasing a new version for their .NET Core framework and there are some significant changes coming your way in that release. The most important ones are

  1. Removal of some sub-components
  2. Removal of the PackageReference to Microsoft.AspNetCore.App
  3. Reducing duplication between NuGet packages and shared frameworks

In v3.0, the ASP.NET Core framework will contain only those assemblies which are fully developed, supported and serviceable by Microsoft. They are doing this to reap all the benefits provided by the .NET Core shared frameworks like smaller deployment size, faster bootup time, centralized patching etc

Removal of some sub-components

In this version, they are removing some sub-components from the ASP.NET Core shared framework and most notable among them are the following

Json.NET 

JSON format has become so popular these days and has become the primary method for transferring data in all modern applications. But .NET doesn't have a built-in library to deal with JSON and relied on third-party libraries like JSON.NET for some time now. In ASP.NET Core, it has a tight integration with Json.NET which restricted the users to chose another library or a different version of Json.NET itself. 

So with version 3.0 they have decoupled Json.NET from the ASP.NET Core shared framework and is planning to replace it with high-performance JSON APIs. That means you will now need to add Json.NET as a separate package in you ASP.NET Core 3.0 project

and then update your ConfigureServices method to include a call to AddNewtonsoftJson() as shown below

public void ConfigureServices(IServiceCollection services)
{
           services.AddMvc()
               .AddNewtonsoftJson();
}

Entity Framework Core

Entity Framework will ship purely as a NuGet package in ASP.NET Core 3.0 in line with the shipping model of all other data access libraries on .NET which helps to bring out new features as and when is done instead of waiting for the release of the next version of the shared framework. Also, even though it has moved out of the shared framework, it will retain the status as a library which is fully developed and supported by Microsoft.

Roslyn

Most of us will make updates to views or pages and preview the changes in the browser without restarting the server. With this cleaning up of the shared framework also meant to drop the usage of Rosyln which supported the runtime compilation of the pages and views. Now the compilation will happen at the build time and if you want to preview changes you may need to rebuild it and run the application again. They are planning to bring in NuGet packages for optionally enabling runtime compilation in the future preview updates.

Removal of PackageReference to Microsoft.AspNetCore.App

In the versions prior to 3.0, references to Microsoft.AspNetCore.App was added as a PackageReference in your csproj file

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

In 3.0, the SDK will introduce a new item called <FrameworkReference> which is going to replace the <PackageReference> tag

<ItemGroup> 
     <FrameworkReference Include="Microsoft.AspNetCore.App" /> 
</ItemGroup>

Reducing duplication between NuGet packages and shared frameworks

With these incoming changes to the shared frameworks, now there is no need to add the assemblies in the Microsoft.AspNetCore.App as NuGet packages when you consume it in your packages. That meant 

https://github.com/aspnet/Announcements/issues/325

https://github.com/aspnet/AspNetCore/issues/3612

https://github.com/dotnet/announcements/issues/90

https://blogs.msdn.microsoft.com/webdev/2018/10/29/a-first-look-at-changes-coming-in-asp-net-core-3-0/

https://github.com/aspnet/announcements/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.0.0


No Comments

Add a Comment