Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment mettre à jour un projet ASP.NET Core 3.1 existant vers ASP.NET Core dans .NET 6. Pour effectuer une mise à niveau de ASP.NET Core dans .NET 5 vers .NET 6, consultez Migrer de ASP.NET Core dans .NET 5 vers .NET 6.
Prerequisites
- Visual Studio 2022 avec la charge de travail Développement ASP.NET et web.
- Kit de développement .NET 6
Mettre à jour la version du SDK .NET dans global.json
Si vous vous appuyez sur un global.json
fichier pour cibler une version spécifique du Kit de développement logiciel (SDK) .NET, mettez à jour la version
propriété vers la version du SDK .NET 6 installée. Par exemple :
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Mettre à jour la version cible de .Net Framework
Mettez à jour le moniker de framework cible (TFM) du fichier projet vers net6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Mettre à jour les références de package
Dans le fichier de projet, mettez à jour l’attribut Version
de chaque référence de package Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
et System.Net.Http.Json
sur 6.0.0 ou version ultérieure. Par exemple :
<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>
Supprimez les dossiers bin
et obj
Vous devrez peut-être supprimer les dossiers bin
et obj
. Exécutez dotnet nuget locals --clear all
pour effacer le cache du package NuGet.
Modèle d’hébergement minimal
Les modèles ASP.NET Core génèrent du code à l’aide du nouveau modèle d’hébergement minimal. Le modèle d’hébergement minimal unifie Startup.cs
et Program.cs
en un seul fichier Program.cs
. ConfigureServices
et Configure
ne sont plus utilisés. Les applications qui migrent de ASP.NET Core 3.1 vers .NET 6 n’ont pas besoin d’utiliser le modèle d’hébergement minimal, et Startup
l’hôte générique utilisé par les modèles ASP.NET Core 3.1 est entièrement pris en charge.
Pour utiliser Startup
avec le nouveau modèle d’hébergement minimal, consultez Utiliser Startup avec le nouveau modèle d’hébergement minimal.
Pour migrer vers le nouveau modèle d’hébergement minimal à l’aide du modèle suivant utilisé par les modèles ASP.NET Core dans .NET 6, consultez les exemples de code migrés vers le nouveau modèle d’hébergement minimal dans ASP.NET Core dans .NET 6 et migrer de ASP.NET Core dans .NET 5 vers .NET 6
Mettre à jour les bibliothèques de classes Razor (RCL)
Migrez les bibliothèques de classes (RCLs) pour tirer parti des nouvelles API ou fonctionnalités introduites dans ASP.NET Core dans .NET 6.
Pour mettre à jour une RCL qui cible des composants :
Mettez à jour les propriétés suivantes dans le fichier de projet :
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Mettez à jour les autres packages vers leurs dernières versions. Les dernières versions sont disponibles sur NuGet.org.
Pour mettre à jour une RCL ciblant MVC, mettez à jour les propriétés suivantes dans le fichier de projet :
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Pour adopter toutes les fonctionnalités 5.0 et 6.0 pour les applications Blazor, nous vous recommandons de procéder comme suit :
- Créez un projet Blazor 6.0 depuis l’un des modèles de projet Blazor. Pour plus d’informations, consultez Outils pour ASP.NET Core Blazor.
- Déplacez les composants et le code de l’application vers l’application 6.0 en apportant les modifications nécessaires pour adopter les nouvelles fonctionnalités 5.0 et 6.0.
Mettre à jour les images Docker
Pour les applications utilisant Docker, mettez à jour vos instructions et scripts DockerfileFROM
. Utilisez une image de base qui inclut le ASP.NET Core dans le runtime .NET 6. Considérez la différence de commande suivante docker pull
entre ASP.NET Core 3.1 et .NET 6 :
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Dans le cadre du passage à « .NET » comme nom de produit, les images Docker ont été déplacées des référentiels mcr.microsoft.com/dotnet/core
vers mcr.microsoft.com/dotnet
. Pour plus d’informations, consultez .NET 5.0 – Changement de nom du référentiel Docker (dotnet/dotnet-docker #1939).
Modifications de la liaison de modèle dans ASP.NET Core MVC et Razor Pages
Les valeurs DateTime
sont liées au modèle en tant qu’heures UTC
Dans ASP.NET Core 3.1 ou version antérieure, DateTime
les valeurs étaient liées au modèle comme heure locale, où le fuseau horaire a été déterminé par le serveur. Les valeurs DateTime
liées à partir du formatage d’entrée (JSON) et les valeurs DateTimeOffset
étaient liées en tant que fuseaux horaires UTC.
Dans .NET 5 ou version ultérieure, la liaison de modèle lie de manière cohérente les DateTime
valeurs avec le fuseau horaire UTC.
Pour conserver le comportement précédent, supprimez DateTimeModelBinderProvider
dans Startup.ConfigureServices
:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
remplace ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Pour ajouter la prise en charge des types d’enregistrement C# 9 pour la liaison de modèles, ComplexTypeModelBinderProvider est :
- Annoté comme obsolète.
- N’est plus enregistré par défaut.
Les applications qui dépendent de la présence de ComplexTypeModelBinderProvider
dans la collection ModelBinderProviders
doivent référencer le nouveau fournisseur de liaison :
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
obsolète
Les modèles ASP.NET Core 3.1 qui incluent une option pour les comptes d’utilisateurs individuels génèrent un appel à UseDatabaseErrorPage. UseDatabaseErrorPage
est désormais obsolète et doit être remplacé par une combinaison de AddDatabaseDeveloperPageExceptionFilter
et UseMigrationsEndPoint
, comme indiqué dans le code suivant :
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();
}
Pour plus d’informations, consultez Obsolète du middleware DatabaseErrorPage (dotnet/aspnetcore #24987).
Module ASP.NET Core (ANCM)
Si vous n’aviez pas sélectionné le composant module ASP.NET Core (ANCM) lors de l’installation de Visual Studio ou si une version antérieure de l’ANCM est installée sur le système, téléchargez le dernier programme d’installation du pack .NET Core Hosting (téléchargement direct) et exécutez l’installateur. Si vous souhaitez en savoir plus, veuillez consulter la rubrique Pack d’hébergement.
Changement de nom de l’application
Dans .NET 6, WebApplicationBuilder normalise le chemin racine du contenu pour qu’il se termine par un DirectorySeparatorChar. La plupart des applications migrées depuis HostBuilder ou WebHostBuilder n’auront pas le même nom d’application, car elles ne sont pas normalisées. Si vous souhaitez en savoir plus, veuillez consulter la rubrique SetApplicationName.
Examiner les changements cassants
Consultez les ressources suivantes :
- Identity: modification de la version Bootstrap par défaut de l’interface utilisateur
- Changements cassants pour la migration de la version 3.1 à la version 5.0. ASP.NET Core et Entity Framework Core sont également inclus dans la liste.
- Modifications disruptives pour la migration de .NET 5 vers .NET 6 : inclut ASP.NET Core et Entity Framework Core.
- Annonces Référentiel GitHub (aspnet/Announcements, étiquette
6.0.0
) : inclut des informations sur les changements cassants et non cassants. - Annonces Référentiel GitHub (aspnet/Announcements, étiquette
5.0.0
) : inclut des informations sur les changements cassants et non cassants.