Eseguire la migrazione da ASP.NET Core 3.1 a 6.0
Questo articolo illustra come aggiornare un progetto esistente ASP.NET Core 3.1 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 ASP.NET e sviluppo Web .
Aggiornare la versione di .NET SDK in global.json
Se si fa affidamento su un global.json
file per indirizzare 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 (TFM) del file di progetto 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 , Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
e System.Net.Http.Json
di riferimento Version
al pacchetto a 6.0.0 o versione 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 ASP.NET Core 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 ASP.NET Core 6.0, vedere Esempi di codice migrati al nuovo modello di hosting minimo in ASP.NET Core 6.0 e Migrate da ASP.NET Core 5.0 a 6.0
Aggiornare Razor le librerie di classi (RCLs)
Eseguire la migrazione Razor delle librerie di classi (RCL) per sfruttare le nuove API o le 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 oggetto 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 le funzionalità 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 che apporta 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. Prendere in considerazione 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 sono state spostate dai mcr.microsoft.com/dotnet/core
repository a mcr.microsoft.com/dotnet
. Per altre informazioni, vedere .NET 5.0 - Docker Repo Name Change (dotnet/dotnet-docker #1939).
Modifiche all'associazione dei modelli in ASP.NET Core MVC e Razor Pages
DateTime
i valori sono associati a modelli come orari UTC
In ASP.NET Core 3.1 e versioni precedenti, DateTime
i valori sono associati a modelli come ora locale, dove il fuso orario è stato determinato dal server. DateTime
i valori associati dalla formattazione di input (JSON) e DateTimeOffset
i valori sono associati come fuso orario UTC.
In ASP.NET Core 5.0 e versioni successive, l'associazione di modelli associa DateTime
in modo coerente i valori al fuso orario UTC.
Per conservare il comportamento precedente, rimuovere l'oggetto DateTimeModelBinderProvider
in 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 binding del modello, è ComplexTypeModelBinderProvider :
- Annotato come obsoleto.
- Non più registrato per impostazione predefinita.
Le app che si basano sulla presenza dell'oggetto ComplexTypeModelBinderProvider
ModelBinderProviders
nella raccolta devono fare riferimento al nuovo provider di binding:
- 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 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 Obsoleting DatabaseErrorPage middleware (dotnet/aspnetcore #24987).
modulo ASP.NET Core (ANCM)
Se il modulo di ASP.NET Core (ANCM) non era un componente selezionato quando Visual Studio è stato installato o se una versione precedente di ANCM è stata installata nel sistema, scaricare il programma di installazione più recente del pacchetto 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 normalizzare WebApplicationBuilder il percorso radice del contenuto da terminare con un DirectorySeparatorCharoggetto . 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
Esaminare le modifiche di rilievo
Vedere le risorse seguenti:
- Identity: versione predefinita di Bootstrap dell'interfaccia utente modificata
- Modifiche di rilievo per la migrazione dalla versione 3.1 alla versione 5.0. ASP.NET Core e Entity Framework Core sono inclusi anche nell'elenco.
- Modifiche di rilievo per la migrazione dalla versione 5.0 alla versione 6.0: include ASP.NET Core e Entity Framework Core.
- Annunci del repository GitHub (aspnet/Annunci,
6.0.0
etichetta): include informazioni di rilievo e non di rilievo. - Annunci del repository GitHub (aspnet/Annunci,
5.0.0
etichetta): include informazioni di rilievo e non di rilievo.