Migrace z ASP.NET Core 3.1 na 6.0
Tento článek vysvětluje, jak aktualizovat existující projekt ASP.NET Core 3.1 na ASP.NET Core 6.0. Pokud chcete upgradovat z ASP.NET Core 5.0 na 6.0, přečtěte si téma Migrace z ASP.NET Core 5.0 na 6.0.
Požadavky
- Sada Visual Studio 2022 se sadou funkcí Vývoj pro ASP.NET a web
- Sada .NET 6.0 SDK
Aktualizace verze sady .NET SDK v global.json
Pokud se spoléháte na global.json
soubor určený pro konkrétní verzi sady .NET SDK, aktualizujte version
vlastnost na nainstalovanou verzi sady .NET 6.0 SDK. Příklad:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Aktualizace cílové architektury
Aktualizujte moniker cílového rozhraní (TFM) souboru projektu nanet6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Aktualizace odkazů na balíčky
V souboru projektu aktualizujte každý Microsoft.AspNetCore.*
Microsoft.EntityFrameworkCore.*
, , Microsoft.Extensions.*
a System.Net.Http.Json
balíček odkaz na Version
atribut 6.0.0 nebo novější. Příklad:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="3.1.6" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.6" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="3.1.6" />
- <PackageReference Include="System.Net.Http.Json" Version="3.2.1" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
</ItemGroup>
Odstranění bin
a obj
složky
Možná budete muset odstranit bin
složky a obj
složky. Spuštěním vymažte dotnet nuget locals --clear all
mezipaměť balíčků NuGet.
Minimální model hostování
Šablony ASP.NET Core generují kód pomocí nového minimálního modelu hostování. Minimální model hostování se sjednocuje Startup.cs
do Program.cs
jednoho Program.cs
souboru. ConfigureServices
a Configure
už se nepoužívají. Aplikace migrované z ASP.NET Core 3.1 na verzi 6.0 nepotřebují používat minimální model hostování a Startup
obecné hostitele používané šablonami ASP.NET Core 3.1 je plně podporovaná.
Pokud chcete použít Startup
s novým minimálním modelem hostování, přečtěte si téma Použití spuštění s novým minimálním modelem hostování.
Pokud chcete migrovat na nový minimální model hostování pomocí následujícího vzoru používaného šablonami ASP.NET Core 6.0, podívejte se na ukázky kódu migrované na nový minimální model hostování v ASP.NET Core 6.0 a migraci z ASP.NET Core 5.0 na 6.0.
Aktualizace Razor knihoven tříd (RCLS)
Migrujte Razor knihovny tříd (RCLS), abyste mohli využívat nová rozhraní API nebo funkce, které jsou zavedeny jako součást ASP.NET Core 6.0.
Aktualizace seznamu RCL, který cílí na komponenty:
V souboru projektu aktualizujte následující vlastnosti:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Aktualizujte další balíčky na nejnovější verze. Nejnovější verze najdete v NuGet.org.
Pokud chcete aktualizovat seznam RCL určený pro MVC, aktualizujte v souboru projektu následující vlastnosti:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Pro přijetí všech funkcí 5.0 a funkcí 6.0 pro Blazor aplikace doporučujeme následující postup:
- Vytvořte nový projekt 6.0 Blazor z jedné ze Blazor šablon projektu. Další informace naleznete v tématu Nástroje pro ASP.NET Core Blazor.
- Přesuňte komponenty a kód aplikace do aplikace 6.0 a upravte nové funkce verze 5.0 a 6.0.
Aktualizace imagí Dockeru
U aplikací používajících Docker aktualizujte příkazy a skripty DockerfileFROM
. Použijte základní image, která zahrnuje modul runtime ASP.NET Core 6.0. Představte si následující docker pull
rozdíl mezi ASP.NET Core 3.1 a 6.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
V rámci přechodu na .NET jako název produktu se image Dockeru přesunuly z mcr.microsoft.com/dotnet/core
úložišť do mcr.microsoft.com/dotnet
. Další informace najdete v tématu .NET 5.0 – Změna názvu úložiště Dockeru (dotnet/dotnet-docker #1939).
Změny vazby modelu ve ASP.NET Core MVC a Razor Stránkách
DateTime
hodnoty jsou vázané jako časy UTC.
V ASP.NET Core 3.1 a starších DateTime
byly hodnoty vázané na model jako místní čas, kdy server určil časové pásmo. DateTime
hodnoty vázané ze vstupního formátování (JSON) a DateTimeOffset
hodnoty byly vázány jako časové pásmo UTC.
V ASP.NET Core 5.0 a novější vazby modelu konzistentně DateTime
sváže hodnoty s časovým pásmem UTC.
Chcete-li zachovat předchozí chování, odeberte v Startup.ConfigureServices
:DateTimeModelBinderProvider
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
nahradit ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Pokud chcete přidat podporu pro typy záznamů C# 9 vazby modelu, je následujícíComplexTypeModelBinderProvider:
- Poznámka je zastaralá.
- Ve výchozím nastavení už není zaregistrovaný.
Aplikace, které spoléhají na přítomnost ComplexTypeModelBinderProvider
v ModelBinderProviders
kolekci, musí odkazovat na nového poskytovatele pořadače:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
zastaralý
Šablony ASP.NET Core 3.1, které obsahují možnost pro jednotlivé uživatelské účty, generují volání UseDatabaseErrorPage. UseDatabaseErrorPage
je nyní zastaralý a měl by být nahrazen kombinací AddDatabaseDeveloperPageExceptionFilter
a UseMigrationsEndPoint
, jak je znázorněno v následujícím kódu:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
+ services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
+ app.UseMigrationsEndPoint();
- app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
Další informace naleznete v tématu Obsoleting DatabaseErrorPage middleware (dotnet/aspnetcore #24987).
modul ASP.NET Core (ANCM)
Pokud ASP.NET Core Module (ANCM) nebyla vybraná komponenta při instalaci sady Visual Studio nebo pokud byla v systému nainstalována předchozí verze ANCM, stáhněte si nejnovější instalační program balíčku hostingu .NET Core (přímý stažení) a spusťte instalační program. Další informace naleznete v tématu Hosting Bundle.
Změna názvu aplikace
V .NET 6 normalizuje kořenovou cestu k obsahu tak, WebApplicationBuilder aby končila na .DirectorySeparatorChar Většina aplikací migrovaných z HostBuilder nebo WebHostBuilder nebude mít stejný název aplikace, protože nejsou normalizované. Další informace najdete v tématu SetApplicationName
Kontrola zásadních změn
Projděte si následující zdroje informací:
- Identity: Změna výchozí verze uživatelského rozhraní bootstrap
- Zásadní změny migrace z verze 3.1 na 5.0 ASP.NET Core a Entity Framework Core jsou také zahrnuté v seznamu.
- Zásadní změny migrace z verze 5.0 na 6.0: Zahrnuje ASP.NET Core a Entity Framework Core.
- Oznámení v úložišti GitHub (aspnet/Announcements,
6.0.0
label): Obsahuje informace o způsobujících porušeních a nefunkčních informacích. - Oznámení v úložišti GitHub (aspnet/Announcements,
5.0.0
label): Obsahuje informace o způsobujících porušeních a nefunkčních informacích.