Migrowanie z ASP.NET Core 3.1 do wersji 6.0
W tym artykule wyjaśniono, jak zaktualizować istniejący projekt ASP.NET Core 3.1 w celu ASP.NET Core 6.0. Aby uaktualnić z ASP.NET Core 5.0 do 6.0, zobacz Migrowanie z ASP.NET Core 5.0 do 6.0.
Wymagania wstępne
- Program Visual Studio 2022 z pakietem roboczym tworzenia aplikacji ASP.NET i aplikacji internetowych.
- Zestaw SDK dla platformy .NET 6.0
Aktualizowanie wersji zestawu .NET SDK w programie global.json
Jeśli plik jest zależny od global.json
określonej wersji zestawu .NET SDK, zaktualizuj version
właściwość do zainstalowanej wersji zestawu SDK platformy .NET 6.0. Na przykład:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Aktualizowanie platformy docelowej
Zaktualizuj plik projektu Target Framework Moniker (TFM) na net6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Aktualizowanie odwołań do pakietów
W pliku projektu zaktualizuj atrybut odwołania do pakietu Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
i System.Net.Http.Json
Version
do wersji 6.0.0 lub nowszej. Na przykład:
<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>
Usuwanie bin
i obj
foldery
Może być konieczne usunięcie bin
folderów i obj
. Uruchom polecenie dotnet nuget locals --clear all
, aby wyczyścić pamięć podręczną pakietu NuGet.
Minimalny model hostingu
Szablony ASP.NET Core generują kod przy użyciu nowego minimalnego modelu hostingu. Minimalny model hostingu łączy Startup.cs
się i Program.cs
w jeden Program.cs
plik. ConfigureServices
i Configure
nie są już używane. Aplikacje migrowane z platformy ASP.NET Core 3.1 do 6.0 nie muszą używać minimalnego modelu hostingu, a Startup
host ogólny używany przez szablony platformy ASP.NET Core 3.1 jest w pełni obsługiwany.
Aby użyć Startup
z nowym minimalnym modelem hostingu, zobacz Use Startup with the new minimal hosting model (Używanie uruchamiania z nowym minimalnym modelem hostingu).
Aby przeprowadzić migrację do nowego minimalnego modelu hostingu przy użyciu następującego wzorca używanego przez szablony platformy ASP.NET Core 6.0, zobacz Przykłady kodu migrowane do nowego minimalnego modelu hostingu w programie ASP.NET Core 6.0 i Migrowanie z ASP.NET Core 5.0 do 6.0
Aktualizowanie Razor bibliotek klas (RCLS)
Migrowanie Razor bibliotek klas (RCLs) w celu korzystania z nowych interfejsów API lub funkcji, które są wprowadzane w ramach ASP.NET Core 6.0.
Aby zaktualizować listę RCL, która jest przeznaczona dla składników:
Zaktualizuj następujące właściwości w pliku projektu:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Zaktualizuj inne pakiety do najnowszych wersji. Najnowsze wersje można znaleźć w NuGet.org.
Aby zaktualizować listę RCL docelową MVC, zaktualizuj następujące właściwości w pliku projektu:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Aby wdrożyć wszystkie funkcje w wersji 5.0 i 6.0 dla Blazor aplikacji, zalecamy następujący proces:
- Utwórz nowy projekt w wersji 6.0 Blazor na podstawie jednego z Blazor szablonów projektów. Aby uzyskać więcej informacji, zobacz Tooling for ASP.NET Core Blazor.
- Przenieś składniki i kod aplikacji do aplikacji w wersji 6.0, wprowadzając modyfikacje w celu wdrożenia nowych funkcji 5.0 i 6.0.
Aktualizowanie obrazów platformy Docker
W przypadku aplikacji korzystających z platformy Docker zaktualizuj instrukcje i skrypty dockerfileFROM
. Użyj obrazu podstawowego, który zawiera środowisko uruchomieniowe ASP.NET Core 6.0. Rozważ następującą docker pull
różnicę poleceń między ASP.NET Core 3.1 i 6.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
W ramach przenoszenia do platformy ".NET" jako nazwy produktu obrazy platformy Docker zostały przeniesione z mcr.microsoft.com/dotnet/core
repozytoriów do .mcr.microsoft.com/dotnet
Aby uzyskać więcej informacji, zobacz .NET 5.0 — Zmiana nazwy repozytorium platformy Docker (dotnet/dotnet-docker #1939).
Zmiany powiązań modelu w usługach ASP.NET Core MVC i Razor Pages
DateTime
wartości są powiązane z modelem w czasie UTC
W ASP.NET Core 3.1 i starszych DateTime
wartości były powiązane z modelem jako czas lokalny, gdzie strefa czasowa została określona przez serwer. DateTime
wartości powiązane z formatowania wejściowego (JSON) i DateTimeOffset
wartości były powiązane jako strefy czasowe UTC.
W ASP.NET Core 5.0 lub nowszym powiązanie modelu stale wiąże DateTime
wartości ze strefą czasową UTC.
Aby zachować poprzednie zachowanie, usuń element w pliku DateTimeModelBinderProvider
:Startup.ConfigureServices
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
zastąpić ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Aby dodać obsługę powiązań modelu dla typów rekordów języka C# 9, to ComplexTypeModelBinderProvider :
- Oznaczone jako przestarzałe.
- Nie zarejestrowano już domyślnie.
Aplikacje, które opierają się na obecności ComplexTypeModelBinderProvider
elementu w ModelBinderProviders
kolekcji, muszą odwoływać się do nowego dostawcy binder:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
przestarzały
Szablony ASP.NET Core 3.1 zawierające opcję dla poszczególnych kont użytkowników generują wywołanie metody UseDatabaseErrorPage. UseDatabaseErrorPage
element jest teraz przestarzały i powinien zostać zastąpiony AddDatabaseDeveloperPageExceptionFilter
kombinacją elementów i UseMigrationsEndPoint
, jak pokazano w poniższym kodzie:
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();
}
Aby uzyskać więcej informacji, zobacz Oprogramowanie pośredniczące Obsoleting DatabaseErrorPage (dotnet/aspnetcore #24987).
ASP.NET Core Module (ANCM)
Jeśli moduł ASP.NET Core Module (ANCM) nie był wybranym składnikiem, gdy program Visual Studio został zainstalowany lub czy wcześniejsza wersja narzędzia ANCM została zainstalowana w systemie, pobierz najnowszy Instalator pakietu hostingowego platformy .NET Core (pobieranie bezpośrednie) i uruchom instalatora. Aby uzyskać więcej informacji, zobacz Hosting Bundle (Pakiet hostingu).
Zmiana nazwy aplikacji
Na platformie .NET 6 WebApplicationBuilder normalizuje ścieżkę katalogu głównego zawartości, aby zakończyć ciąg .DirectorySeparatorChar Większość aplikacji migrowanych z HostBuilder lub WebHostBuilder nie ma takiej samej nazwy aplikacji, ponieważ nie są znormalizowane. Aby uzyskać więcej informacji, zobacz SetApplicationName
Przeglądanie zmian powodujących niezgodność
Zobacz następujące zasoby:
- Identity: Zmieniono domyślną wersję interfejsu użytkownika bootstrap
- Istotne zmiany migracji z wersji 3.1 do 5.0. Na liście znajdują się również ASP.NET Core i Entity Framework Core.
- Zmiany powodujące niezgodność dotyczące migracji z wersji 5.0 do 6.0: obejmuje ASP.NET Core i Entity Framework Core.
- Repozytorium Anonsów w usłudze GitHub (aspnet/Anonsy,
6.0.0
etykieta): zawiera informacje powodujące niezgodność i niezgodność. - Repozytorium Anonsów w usłudze GitHub (aspnet/Anonsy,
5.0.0
etykieta): zawiera informacje powodujące niezgodność i niezgodność.