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
Sada Visual Studio 2022 se sadou funkcí Vývoj pro ASP.NET a web
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.razor
která 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:
- [Zásadní změna]: Aktualizace ověřování v aplikacích webassembly
- ASP.NET Základní Blazor směrování a navigace
- Zabezpečení ASP.NET Core Blazor WebAssembly
- Ověřování a autorizace ASP.NET Core Blazor
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.