Migrieren von ASP.NET Core 6.0 auf 7.0

In diesem Artikel wird erläutert, wie Sie ein vorhandenes ASP.NET Core 6.0-Projekt auf ASP.NET Core 7.0 aktualisieren.

Voraussetzungen

Aktualisieren der .NET Core SDK-Version in „global.json“

Wenn Sie eine global.json-Datei für eine bestimmte .NET Core SDK-Version verwenden, aktualisieren Sie die version-Eigenschaft auf die installierte .NET 7.0 SDK-Version. Beispiel:

{
  "sdk": {
-    "version": "6.0.200"
+    "version": "7.0.100"
  }
}

Aktualisieren des Zielframeworks

Aktualisieren Sie den Zielframeworkmoniker (Target Framework Moniker, TFM) der Projektdatei auf net7.0:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
-    <TargetFramework>net6.0</TargetFramework>
+    <TargetFramework>net7.0</TargetFramework>
  </PropertyGroup>

</Project>

Aktualisieren von Paketverweisen

Aktualisieren Sie in der Projektdatei das Version-Attribut jedes Microsoft.AspNetCore.*-, Microsoft.EntityFrameworkCore.*-, Microsoft.Extensions.*- und System.Net.Http.Json-Paketverweises auf 7.0.0 oder höher. Beispiel:

<ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.9" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.9" />
-    <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.9" />
-    <PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="7.0.0" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0" />
+    <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="7.0.0" />
+    <PackageReference Include="System.Net.Http.Json" Version="7.0.0" />
</ItemGroup>

Blazor

Einführen von .NET 7-Features

Nachdem Sie die weiter oben in diesem Artikel beschriebene Anleitung zum Aktualisieren einer App auf 7.0 befolgt haben, können Sie bestimmte Features einführen, indem Sie den Links unter Neuerungen in ASP.NET Core 7.0 folgen.

Um alle neuen 7.0-Features für Blazor-Apps einzuführen, empfehlen wir den folgenden Prozess:

  • Erstellen Sie ein neues Blazor-Projekt für 7.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 7.0-App, und nehmen Sie Änderungen vor, um die neuen 7.0-Features einzuführen.

Migrieren von JavaScript-Interop-Aufrufen mit rückgängig gemachtem Marshallen

Interop-Aufrufe ohne Marshalling mit der Schnittstelle IJSUnmarshalledRuntime sind veraltet und sollten durch JavaScript-Interop-Aufrufe [JSImport]/[JSExport] ersetzt werden.

Weitere Informationen finden Sie unter JavaScript-Interoperabilität mit JSImport/JSExport mit ASP.NET CoreBlazor.

Blazor WebAssembly-Authentifizierung verwendet den Verlaufsstatus für Umleitungen.

Die Unterstützung für die Authentifizierung in Blazor WebAssembly-Apps wurde so geändert, dass sie vom Navigationsverlaufsstatus abhängig ist und nicht von Abfragezeichenfolgen in der URL. Daher kann nach einer erfolgreichen Anmeldung in .NET 7 nicht durch Übergeben der Rückgabe-URL in der Abfragezeichenfolge zur ursprünglichen Seite zurückgeleitet werden.

Im folgenden Beispiel wird der vorherige Umleitungsansatz für Apps veranschaulicht, die auf .NET 6 oder ältere Versionen ausgerichtet sind, der auf einer Umleitungs-URL (?returnUrl=) mit NavigateTo basiert:

@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@code {
    protected override void OnInitialized()
    {
        Navigation.NavigateTo(
            $"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");
    }
}

Im folgenden Beispiel wird der neue Umleitungsansatz für Apps veranschaulicht, die auf .NET 7oder höhere Versionen ausgerichtet sind, der auf dem Navigationsverlaufsstatus mit NavigateToLogin basiert:

@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.Extensions.Options

@inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> OptionsSnapshot
@code {
    protected override void OnInitialized()
    {
        Navigation.NavigateToLogin(OptionsSnapshot.Get(Options.DefaultName).AuthenticationPaths.LogInPath);
    }
}

Im Rahmen dieser Änderung ist SignOutSessionStateManager in .NET 7 oder höher veraltet und wird durch NavigateToLogout ersetzt.

Im folgenden Beispiel wird der vorherige Ansatz in Shared/LoginDisplay.razor einer App veranschaulicht, die über die Blazor WebAssembly-Projektvorlage generiert wurde:

@inject SignOutSessionStateManager SignOutManager

...

@code{
    private async Task BeginLogout(MouseEventArgs args)
    {
        await SignOutManager.SetSignOutState();
        Navigation.NavigateTo("authentication/logout");
    }
}

Im folgenden Beispiel wird der neue Ansatz veranschaulicht, der NavigateToLogout aufruft. Die Einschleusung (@inject) von SignOutSessionStateManager wird aus den Anweisungen der Komponente am Anfang der Datei entfernt, und die BeginLogOut-Methode in den folgenden Code aktualisiert:

@code{
    public void BeginLogOut()
    {
        Navigation.NavigateToLogout("authentication/logout");
    }
}

Die SignOutSessionStateManager-Dienstregistrierung wird in Program.cs entfernt:

- builder.Services.AddScoped<SignOutSessionStateManager>();

Weitere Informationen finden Sie in den folgenden Ressourcen:

.NET WebAssembly-Buildtools für .NET 6-Projekte

Sie können jetzt die .NET WebAssembly-Buildtools mit einem .NET 6-Projekt verwenden, wenn Sie das .NET 7 SDK nutzen. Die neue wasm-tools-net6-Workload enthält die .NET WebAssembly-Buildtools für .NET 6-Projekte, damit sie mit dem .NET 7 SDK verwendet werden können. Die vorhandene wasm-tools-Workload installiert die .NET WebAssembly-Buildtools für .NET 7-Projekte. Die .NET 7-Version der .NET WebAssembly-Buildtools ist jedoch nicht mit vorhandenen Projekten kompatibel, die mit .NET 6 erstellt wurden. Projekte, die die .NET WebAssembly-Buildtools verwenden, die sowohl .NET 6 als auch .NET 7 unterstützen müssen, müssen die Festlegung von Zielversionen verwenden.

Aktualisieren von Docker-Images

Aktualisieren Sie für Apps, die Docker verwenden, Ihre Dockerfile-FROM-Anweisungen und Skripts. Verwenden Sie ein Basisimage, das die ASP.NET Core 7.0-Runtime enthält. Beachten Sie den folgenden Unterschied beim Befehl docker pull zwischen ASP.NET Core 6.0 und 7.0:

- docker pull mcr.microsoft.com/dotnet/aspnet:6.0
+ docker pull mcr.microsoft.com/dotnet/aspnet:7.0

Überprüfen von Breaking Changes

Breaking Changes von .NET Core 6.0 zu .NET 7.0 finden Sie unter Breaking Changes in .NET 7. ASP.NET Core und Entity Framework Core sind in der Liste enthalten.