Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak zaktualizować istniejący projekt ASP.NET Core 3.1 w celu ASP.NET Core na platformie .NET 6. Aby uaktualnić z platformy ASP.NET Core na platformie .NET 5 do .NET 6, zobacz Migrowanie z platformy ASP.NET Core na platformie .NET 5 do .NET 6.
Wymagania wstępne
- Program Visual Studio 2022 z pakietem roboczym tworzenia aplikacji ASP.NET i aplikacji internetowych.
- SDK .NET 6
Aktualizowanie wersji zestawu .NET SDK w programie global.json
Jeśli korzystasz z global.json
pliku przeznaczonego dla określonej wersji zestawu .NET SDK, zaktualizuj version
właściwość do zainstalowanej wersji zestawu SDK platformy .NET 6. 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 platformy .NET 6 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 na platformie .NET 6, zobacz Przykłady kodu migrowane do nowego minimalnego modelu hostingu w programie ASP.NET Core na platformie .NET 6 i Migrowanie z platformy ASP.NET Core na platformie .NET 5 do platformy .NET 6
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 platformy ASP.NET Core na platformie .NET 6.
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 ASP.NET Core w środowisku uruchomieniowym platformy .NET 6. Rozważmy następującą docker pull
różnicę poleceń między ASP.NET Core 3.1 i .NET 6:
- 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 lub starszej 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 programie .NET 5 lub nowszym powiązanie modelu spójnie 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.
- Istotne zmiany dotyczące migracji z platformy .NET 5 do platformy .NET 6: 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ść.