Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie ein vorhandenes ASP.NET Core 3.1-Projekt auf ASP.NET Core in .NET 6 aktualisieren. Informationen zum Upgrade von ASP.NET Core in .NET 5 auf .NET 6 finden Sie unter Migrieren von ASP.NET Core in .NET 5 zu .NET 6.
Voraussetzungen
- Visual Studio 2022 mit der Workload ASP.NET und Webentwicklung.
- .NET 6 SDK
Aktualisieren der .NET Core SDK-Version in global.json
Wenn Sie sich auf eine global.json
Datei verlassen, die auf eine bestimmte .NET SDK-Version ausgerichtet ist, aktualisieren Sie die version
Eigenschaft auf die .NET 6 SDK-Version, die installiert ist. Zum Beispiel:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Aktualisieren des Zielframeworks
Aktualisieren Sie den Zielframeworkmoniker (Target Framework Moniker, TFM) der Projektdatei auf net6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Aktualisieren von Paketverweisen
Aktualisieren Sie in der Projektdatei das Version
-Attribut jedes Paketverweises vom Typ Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
und System.Net.Http.Json
auf 6.0.0 oder höher. Zum Beispiel:
<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>
Löschen der Ordner bin
und obj
Möglicherweise müssen Sie die Ordner bin
und obj
löschen. Führen Sie dotnet nuget locals --clear all
aus, um den NuGet-Paketcache zu löschen.
Minimales Hostingmodell
Die ASP.NET Core Vorlagen generieren Code mithilfe des neuen minimalen Hostingmodells. Das minimale Hostingmodell vereinheitlicht Startup.cs
und Program.cs
in einer einzelnen Program.cs
-Datei. ConfigureServices
und Configure
werden nicht mehr verwendet. Apps, die von ASP.NET Core 3.1 zu .NET 6 migriert werden, müssen nicht das minimale Hostingmodell verwenden, und der Startup
, der von den ASP.NET Core 3.1-Vorlagen verwendet wird, wird vollständig unterstützt.
Informationen zur Verwendung von Startup
mit dem neuen minimalen Hostingmodell finden Sie unter Verwenden des Startvorgangs mit dem neuen minimalen Hostingmodell.
Um auf das neue Minimalhostingmodell mithilfe des folgenden Musters, das in den ASP.NET Core in .NET 6-Vorlagen verwendet wird, umzustellen, sehen Sie sich Codebeispiele an, die auf das neue minimale Hostingmodell in ASP.NET Core in .NET 6 migriert wurden und die Migration von ASP.NET Core in .NET 5 zu .NET 6 an.
Aktualisieren von Razor-Klassenbibliotheken (RCLs)
Migrieren Sie Razor Klassenbibliotheken (RCLs), um neue APIs oder Features zu nutzen, die als Teil von ASP.NET Core in .NET 6 eingeführt werden.
So aktualisieren Sie eine RCL, die sich auf Komponenten bezieht:
Aktualisieren Sie die folgenden Eigenschaften in der Projektdatei:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Aktualisieren Sie andere Pakete auf die aktuellen Versionen. Die aktuellen Versionen finden Sie auf NuGet.org.
Um eine RCL für Model View Controller (MVC) zu aktualisieren, aktualisieren Sie die folgenden Eigenschaften in der Projektdatei:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Um alle 5.0-Features und 6.0-Features für Blazor-Apps, einzuführen, empfehlen wir den folgenden Prozess:
- Erstellen Sie ein neues Blazor-Projekt für 6.0 auf der Grundlage einer der Blazor-Projektvorlagen. Weitere Informationen finden Sie unter Tools für ASP.NET Core Blazor.
- Migrieren Sie die Komponenten und den Code der App zur 6.0-App, und nehmen Sie Änderungen vor, um die neuen 5.0- und 6.0-Features einzuführen.
Aktualisieren von Docker-Images
Für Apps, die Docker verwenden, aktualisieren Sie Ihre DockerfileFROM
-Anweisungen und Skripte. Verwenden Sie ein Basisimage, das den ASP.NET Core in .NET 6 Runtime enthält. Beachten Sie den folgenden docker pull
Befehlsunterschied zwischen ASP.NET Core 3.1 und .NET 6:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Im Rahmen des Wechsels zu „.NET“ als Produktname wurden die Docker-Images aus den mcr.microsoft.com/dotnet/core
-Repositorys in mcr.microsoft.com/dotnet
verschoben. Weitere Informationen finden Sie unter .NET 5.0 - Docker Repo Name Change (dotnet/dotnet-docker #1939) (.NET 5.0 – Namensänderung für Docker-Repository (dotnet/dotnet-docker #1939)).
Änderungen der Modellbindung in ASP.NET Core MVC und Razor Pages
DateTime
-Werte sind als UTC-Zeiten modellgebunden.
In ASP.NET Core 3.1 oder früheren DateTime
Versionen waren Werte modellgebunden als ortszeit, wobei die Zeitzone vom Server bestimmt wurde. Durch die Eingabeformatierung (JSON) gebundene DateTime
-Werte und DateTimeOffset
-Werte wurden als UTC-Zeitzonen gebunden.
In .NET 5 oder höher bindet die Modellbindung DateTime
Werte konsistent mit der UTC-Zeitzone.
Um das vorherige Verhalten beizubehalten, entfernen Sie DateTimeModelBinderProvider
in Startup.ConfigureServices
:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
ersetzen Sie ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Zum Hinzufügen von Unterstützung für die Modellbindung von C# 9-Datensatztypen ist der ComplexTypeModelBinderProvider:
- Als veraltet gekennzeichnet.
- Nicht mehr standardmäßig registriert.
Apps, die vom Vorhandensein von ComplexTypeModelBinderProvider
in der ModelBinderProviders
-Sammlung abhängig sind, müssen auf den neuen Binderanbieter verweisen:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
veraltet
Die ASP.NET Core 3.1-Vorlagen, die eine Option für einzelne Benutzerkonten enthalten, generieren einen Aufruf von UseDatabaseErrorPage. UseDatabaseErrorPage
ist jetzt veraltet und sollte wie im folgenden Code gezeigt durch eine Kombination von AddDatabaseDeveloperPageExceptionFilter
und UseMigrationsEndPoint
ersetzt werden:
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();
}
Weitere Informationen finden Sie unter Obsoleting DatabaseErrorPage middleware (dotnet/aspnetcore #24987) (Markieren von DatabaseErrorPage-Middleware als veraltet (dotnet/aspnetcore #24987)).
ASP.NET Core-Modul (ANCM)
Wenn das ASP.NET Core-Modul (ANCM) bei der Installation von Visual Studio keine ausgewählte Komponente war oder wenn eine frühere Version des ANCM auf dem System installiert wurde, laden Sie den neuesten Installer für das .NET Core Hosting-Paket (direkter Download) herunter, und führen Sie das Installationsprogramm aus. Weitere Informationen finden Sie unter Das .NET Core-Hostingbundle.
Änderung des Anwendungsnamens
In .NET 6 normalisiert WebApplicationBuilder den Inhaltsstammpfad so, dass er mit DirectorySeparatorChar endet. Die meisten Apps, die von HostBuilder oder WebHostBuilder migriert werden, haben nicht denselben App-Namen, da sie nicht normalisiert sind. Weitere Informationen finden Sie unter SetApplicationName.
Überprüfen von Breaking Changes
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Identity: Bootstrap-Standardversion der Benutzeroberfläche geändert
- Breaking Changes bei der Migration von Version 3.1 zu Version 5.0 ASP.NET Core und Entity Framework Core sind auch in der Liste enthalten.
- Grundlegende Änderungen für die Migration von .NET 5 zu .NET 6: Umfasst ASP.NET Core und Entity Framework Core.
- GitHub-Repository „Announcements“ („aspnet/Announcements“, Bezeichnung:
6.0.0
): Enthält Informationen zu Breaking Changes und zu Nonbreaking Changes. - GitHub-Repository „Announcements“ („aspnet/Announcements“, Bezeichnung:
5.0.0
): Enthält Informationen zu Breaking Changes und zu Nonbreaking Changes.