Sdílet prostřednictvím


Migrace z ASP.NET Core 6.0 na 7.0

Tento článek vysvětluje, jak aktualizovat existující projekt ASP.NET Core 6.0 na ASP.NET Core 7.0.

Požadavky

Aktualizace verze sady .NET Core SDK v global.json

Pokud se spoléháte na soubor určený global.json pro konkrétní verzi sady .NET Core SDK, aktualizujte version vlastnost na nainstalovanou verzi sady .NET 7.0 SDK. Příklad:

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

Aktualizace cílové architektury

Aktualizujte moniker cílového rozhraní (TFM) souboru projektu nanet7.0:

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

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

</Project>

Aktualizace odkazů na balíčky

V souboru projektu aktualizujte každý atribut odkazu Version na balíček Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*a System.Net.Http.Json atribut odkazu na balíček 7.0.0 nebo novější. Příklad:

<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

Přijetí funkcí .NET 7

Jakmile budete postupovat podle pokynů uvedených výše v tomto článku, abyste aktualizovali aplikaci na verzi 7.0, použijte konkrétní funkce pomocí odkazů v části Co je nového v ASP.NET Core 7.0.

Pokud chcete přijmout všechny nové funkce 7.0 pro Blazor aplikace, doporučujeme následující postup:

  • Vytvořte nový projekt 7.0 Blazor z jedné ze Blazor šablon projektu. Další informace naleznete v tématu Nástroje pro ASP.NET Core Blazor.
  • Přesuňte komponenty a kód aplikace do aplikace verze 7.0 a upravte nové funkce verze 7.0.

Zjednodušení vazby parametrů komponenty

V předchozích Blazor verzích vazby napříč několika komponentami vyžadovaly vazbu na vlastnosti s přistupujícími get/set objekty.

V .NET 6 a starších verzích:

<NestedGrandchild @bind-GrandchildMessage="BoundValue" />

@code {
    ...

    private string BoundValue
    {
        get => ChildMessage ?? string.Empty;
        set => ChildMessageChanged.InvokeAsync(value);
    }
}

V .NET 7 můžete pomocí nových @bind:get a @bind:set modifikátorů podporovat obousměrnou datovou vazbu a zjednodušit syntaxi vazby:

<NestedGrandchild @bind-GrandchildMessage:get="ChildMessage" 
    @bind-GrandchildMessage:set="ChildMessageChanged" />

Další informace najdete v následujícím obsahu v článku datové vazby :

Migrace neoznačené spolupráce JavaScriptu

Neposkládaný interoperabilita používající IJSUnmarshalledRuntime rozhraní je zastaralá a měla by být nahrazena javascriptovou [JSImport]/[JSExport] interoperabilitou.

Další informace naleznete v tématu JavaScript JSImport/JSExport interop s ASP.NET Core Blazor.

Blazor WebAssembly Ověřování používá pro přesměrování stav historie.

Podpora ověřování vaplikacích Blazor WebAssembly V důsledku toho se předání zpáteční adresy URL přes řetězec dotazu nepodaří po úspěšném přihlášení v .NET 7 přesměrovat zpět na původní stránku.

Následující příklad ukazuje předchozí přístup přesměrování pro aplikace, které cílí na .NET 6 nebo starší , RedirectToLogin.razorkterá je založená na adrese URL přesměrování (?returnUrl=) s NavigateTo:

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

Následující příklad ukazuje nový přístup přesměrování pro aplikace, které cílí na .NET 7 nebo novější RedirectToLogin.razor , který je založen na stavu historie navigace s NavigateToLogin:

@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);
    }
}

V rámci této změny SignOutSessionStateManager je zastaralé v .NET 7 nebo novější a nahrazeno .NavigateToLogout

Následující příklad ukazuje předchozí přístup v Shared/LoginDisplay.razor aplikaci vygenerované ze Blazor WebAssembly šablony projektu:

@inject SignOutSessionStateManager SignOutManager

...

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

Následující příklad ukazuje nový přístup v Shared/LoginDisplay.razor této volání NavigateToLogout. Injektáž (@inject) direktiv SignOutSessionStateManager komponenty v horní části souboru se odebere a BeginLogOut metoda se aktualizuje na následující kód:

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

Registrace SignOutSessionStateManager služby se odebere v Program.cs:

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

Další informace naleznete v následujících zdrojích:

Nástroje pro sestavení .NET WebAssembly pro projekty .NET 6

Při práci se sadou .NET SDK 7 teď můžete použít nástroje sestavení .NET WebAssembly s projektem .NET 6. Nová wasm-tools-net6 úloha zahrnuje nástroje sestavení .NET WebAssembly pro projekty .NET 6, aby je bylo možné použít se sadou .NET 7 SDK. wasm-tools Stávající úloha nainstaluje nástroje sestavení .NET WebAssembly pro projekty .NET 7. Verze .NET 7 nástrojů sestavení .NET WebAssembly však není kompatibilní s existujícími projekty vytvořenými v .NET 6. Projekty využívající nástroje sestavení .NET WebAssembly, které potřebují podporovat .NET 6 i .NET 7, musí používat více cílení.

Aktualizace imagí Dockeru

U aplikací používajících Docker aktualizujte příkazy a skripty DockerfileFROM. Použijte základní image, která zahrnuje modul runtime ASP.NET Core 7.0. Představte si následující docker pull rozdíl mezi ASP.NET Core 6.0 a 7.0:

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

Kontrola zásadních změn

Zásadní změny z .NET Core 6.0 na .NET 7.0 najdete v tématu Zásadní změny v .NET 7. ASP.NET Core a Entity Framework Core jsou zahrnuté v seznamu.