Eseguire la migrazione da ASP.NET Core 3.1 a 6.0
Questo articolo illustra come aggiornare un progetto ASP.NET Core 3.1 esistente a ASP.NET Core 6.0. Per eseguire l'aggiornamento da ASP.NET Core 5.0 a 6.0, vedere Eseguire la migrazione da ASP.NET Core 5.0 a 6.0.
Prerequisiti
- Visual Studio 2022 con il carico di lavoro Sviluppo ASP.NET e Web.
- .NET 6.0 SDK
Aggiornare la versione di .NET SDK in global.json
Se si fa affidamento su un global.json
file per specificare una versione specifica di .NET SDK, aggiornare la version
proprietà alla versione di .NET 6.0 SDK installata. Ad esempio:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Aggiornare il framework di destinazione
Aggiornare il moniker del framework di destinazione del file di progetto (TFM) a net6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Aggiornare i riferimenti del pacchetto
Nel file di progetto aggiornare ogni Microsoft.AspNetCore.*
attributo di riferimento al pacchetto Version
, Microsoft.EntityFrameworkCore.*
Microsoft.Extensions.*
, e System.Net.Http.Json
alla versione 6.0.0 o successiva. Ad esempio:
<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>
Eliminare bin
e obj
cartelle
Potrebbe essere necessario eliminare le bin
cartelle e obj
. Eseguire dotnet nuget locals --clear all
per cancellare la cache dei pacchetti NuGet.
Modello di hosting minimo
I modelli di base ASP.NET generano codice usando il nuovo modello di hosting minimo. Il modello di hosting minimo unifica Startup.cs
e Program.cs
in un singolo Program.cs
file. ConfigureServices
e Configure
non vengono più usati. Le app che eseguono la migrazione da ASP.NET Core 3.1 a 6.0 non devono usare il modello di hosting minimo, usando Startup
e l'host generico usato dai modelli ASP.NET Core 3.1 è completamente supportato.
Per usare Startup
con il nuovo modello di hosting minimo, vedere Usare startup con il nuovo modello di hosting minimo.
Per eseguire la migrazione al nuovo modello di hosting minimo usando il modello seguente usato dai modelli di ASP.NET Core 6.0, vedere Esempi di codice migrati al nuovo modello di hosting minimo in ASP.NET Core 6.0 ed Eseguire la migrazione da ASP.NET Core 5.0 a 6.0
Aggiornare Razor le librerie di classi (RCL)
Eseguire la migrazione Razor di librerie di classi (RCLs) per sfruttare le nuove API o le nuove funzionalità introdotte come parte di ASP.NET Core 6.0.
Per aggiornare un RCL destinato ai componenti:
Aggiornare le proprietà seguenti nel file di progetto:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Aggiornare altri pacchetti alle versioni più recenti. Le versioni più recenti sono disponibili in NuGet.org.
Per aggiornare un RCL destinato a MVC, aggiornare le proprietà seguenti nel file di progetto:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Per adottare tutte le funzionalità 5.0 e 6.0 per Blazor le app, è consigliabile eseguire il processo seguente:
- Creare un nuovo progetto 6.0 Blazor da uno dei modelli di Blazor progetto. Per altre informazioni, vedere Strumenti per ASP.NET Core Blazor.
- Spostare i componenti e il codice dell'app nell'app 6.0 apportando modifiche per adottare le nuove funzionalità 5.0 e 6.0.
Aggiornare le immagini Docker
Per le app che usano Docker, aggiornare le istruzioni e gli script DockerfileFROM
. Usare un'immagine di base che include il runtime di ASP.NET Core 6.0. Si consideri la differenza di comando seguente docker pull
tra ASP.NET Core 3.1 e 6.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Come parte del passaggio a ".NET" come nome del prodotto, le immagini Docker spostate dai mcr.microsoft.com/dotnet/core
repository a mcr.microsoft.com/dotnet
. Per altre informazioni, vedere .NET 5.0 - Modifica del nome del repository Docker (dotnet/dotnet-docker #1939).
Modifiche all'associazione di modelli in ASP.NET Core MVC e Razor pages
DateTime
i valori sono associati al modello come ore UTC
In ASP.NET Core 3.1 e versioni precedenti, DateTime
i valori sono associati al modello come ora locale, in cui il fuso orario è stato determinato dal server. DateTime
i valori associati dalla formattazione di input (JSON) e DateTimeOffset
i valori sono stati associati come fusi orari UTC.
In ASP.NET Core 5.0 e versioni successive, l'associazione di modelli associa in modo coerente i DateTime
valori al fuso orario UTC.
Per mantenere il comportamento precedente, rimuovere in DateTimeModelBinderProvider
Startup.ConfigureServices
:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
sostituire ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Per aggiungere il supporto per i tipi di record C# 9 di associazione di modelli, ComplexTypeModelBinderProvider è:
- Annotato come obsoleto.
- Non più registrato per impostazione predefinita.
Le app che si basano sulla presenza di ComplexTypeModelBinderProvider
nella ModelBinderProviders
raccolta devono fare riferimento al nuovo provider del gestore di associazione:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
obsoleto
I modelli ASP.NET Core 3.1 che includono un'opzione per i singoli account utente generano una chiamata a UseDatabaseErrorPage. UseDatabaseErrorPage
è ora obsoleto e deve essere sostituito con una combinazione di AddDatabaseDeveloperPageExceptionFilter
e UseMigrationsEndPoint
, come illustrato nel codice seguente:
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();
}
Per altre informazioni, vedere Middleware DatabaseErrorPage obsoleto (dotnet/aspnetcore #24987).
modulo ASP.NET core (ANCM)
Se la ASP.NET Core Module (ANCM) non è un componente selezionato quando Visual Studio è stato installato o se è stata installata una versione precedente di ANCM nel sistema, scaricare l'ultimo programma di installazione del bundle di hosting .NET Core (download diretto) ed eseguire il programma di installazione. Per altre informazioni, vedere Bundle di hosting.
Modifica del nome dell'applicazione
In .NET 6 WebApplicationBuilder normalizza il percorso radice del contenuto per terminare con un oggetto DirectorySeparatorChar. La maggior parte delle app che eseguono la migrazione da HostBuilder o WebHostBuilder non avrà lo stesso nome dell'app perché non sono normalizzate. Per altre informazioni, vedere SetApplicationName
Rivedere le modifiche che causano un'interruzione
Vedere le risorse seguenti:
- Identity: versione predefinita di Bootstrap dell'interfaccia utente modificata
- Modifiche di rilievo per la migrazione dalla versione 3.1 alla 5.0. ASP.NET Core ed Entity Framework Core sono inclusi anche nell'elenco.
- Modifiche di rilievo per la migrazione dalla versione 5.0 alla 6.0: include ASP.NET Core ed Entity Framework Core.
- Repository GitHub annunci (aspnet/Announcements,
6.0.0
etichetta): include informazioni di rilievo e non di rilievo. - Repository GitHub annunci (aspnet/Announcements,
5.0.0
etichetta): include informazioni di rilievo e non di rilievo.