Aracılığıyla paylaş


ASP.NET Core 6.0'dan 7.0'a geçiş

Bu makalede, mevcut bir ASP.NET Core 6.0 projesinin ASP.NET Core 7.0'a nasıl güncelleştirilecekleri açıklanmaktadır.

Önkoşullar

içinde .NET Core SDK sürümünü güncelleştirme global.json

Belirli bir .NET Core SDK sürümünü hedeflemek için bir global.json dosya kullanırsanız, özelliğini yüklü .NET 7.0 SDK sürümüne güncelleştirin version . Örneğin:

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

Hedef çerçeveyi güncelleştirme

Proje dosyasının Target Framework Takma Adını (TFM) olarak net7.0güncelleştirin:

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

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

</Project>

Paket başvurularını güncelleştirme

Proje dosyasında her Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*ve System.Net.Http.Json paket başvurusunun Version özniteliğini 7.0.0 veya üzeri sürümlere güncelleştirin. Örneğin:

<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

.NET 7 özelliklerini benimseme

Bir uygulamayı 7.0'a güncelleştirmek için bu makalenin önceki bölümlerindeki yönergeleri takip ettikten sonra, ASP.NET Core 7.0'daki yenilikler başlığındaki bağlantıları izleyerek belirli özellikleri benimseyin.

Uygulamalar için tüm yeni 7.0 özelliklerini benimsemek için Blazor aşağıdaki işlemi öneririz:

  • Proje şablonlarından birinden Blazor yeni bir 7.0 Blazor projesi oluşturun. Daha fazla bilgi için bkz . ASP.NET Core Blazoriçin Araçlar.
  • Yeni 7.0 özelliklerini benimsemek için değişiklikler yaparak uygulamanın bileşenlerini ve kodunu 7.0 uygulamasına taşıyın.

Bileşen parametresi bağlamayı basitleştirme

Önceki Blazor sürümlerde, birden çok bileşen arasında bağlama, erişimcilerle get/set özelliklere bağlama gerektiriyor.

.NET 6 ve önceki sürümlerde:

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

@code {
    ...

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

.NET 7'de, iki yönlü veri bağlamayı desteklemek ve bağlama söz dizimini basitleştirmek için yeni @bind:get ve @bind:set değiştiricileri kullanabilirsiniz:

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

Daha fazla bilgi için Veri bağlama makalesindeki aşağıdaki içeriğe bakın:

Özetlenmemiş JavaScript birlikte çalışma geçişi

Arabirimi kullanan IJSUnmarshalledRuntime özetlenmemiş birlikte çalışma kullanım dışıdır ve JavaScript [JSImport]/[JSExport] birlikte çalışmasıyla değiştirilmelidir.

Daha fazla bilgi için bkz . JavaScript JSImport/JSExport ASP.NET Core Blazorile birlikte çalışma.

Blazor WebAssembly kimlik doğrulaması, yeniden yönlendirmeler için geçmiş durumunu kullanır

Uygulamalarda kimlik doğrulaması desteği, URL'deki Blazor WebAssembly sorgu dizeleri yerine gezinti geçmişi durumuna bağlı olacak şekilde değiştirildi. Sonuç olarak, .NET 7'de başarılı bir oturum açma işleminden sonra dönüş URL'sinin sorgu dizesi üzerinden geçirilmesi özgün sayfaya geri yönlendirilemiyor.

Aşağıdaki örnek, ile NavigateToyeniden yönlendirme URL'sini (?returnUrl=) temel alan ve içinde RedirectToLogin.razor.NET 6 veya önceki sürümleri hedefleyen uygulamalar için önceki yeniden yönlendirme yaklaşımını gösterir:

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

Aşağıdaki örnek, ile gezinti geçmişi durumunu NavigateToLogin temel alan içinde .NET 7 veya üstünü RedirectToLogin.razorhedefleyen uygulamalar için yeni yeniden yönlendirme yaklaşımını gösterir:

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

Bu değişikliğin bir parçası olarak , SignOutSessionStateManager .NET 7 veya sonraki sürümlerinde kullanımdan kaldırılmış ve ile NavigateToLogoutdeğiştirilmiştir.

Aşağıdaki örnek, proje şablonundan oluşturulan bir uygulamanın önceki yaklaşımını Shared/LoginDisplay.razor Blazor WebAssembly gösterir:

@inject SignOutSessionStateManager SignOutManager

...

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

Aşağıdaki örnekte çağrısında NavigateToLogoutShared/LoginDisplay.razor yeni yaklaşım gösterilmektedir. öğesinin eklemesi SignOutSessionStateManager (@inject) dosyanın en üstündeki bileşenin yönergelerinden kaldırılır ve BeginLogOut yöntemi aşağıdaki koda güncelleştirilir:

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

Hizmet SignOutSessionStateManager kaydı içinde Program.cskaldırılır:

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

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

.NET 6 projeleri için .NET WebAssembly derleme araçları

Artık .NET 7 SDK ile çalışırken .NET WebAssembly derleme araçlarını bir .NET 6 projesiyle kullanabilirsiniz. Yeni wasm-tools-net6 iş yükü, .NET 7 SDK ile kullanılabilmesi için .NET 6 projeleri için .NET WebAssembly derleme araçlarını içerir. Mevcut wasm-tools iş yükü ,NET 7 projeleri için .NET WebAssembly derleme araçlarını yükler. Ancak, .NET WebAssembly derleme araçlarının .NET 7 sürümü .NET 6 ile oluşturulan mevcut projelerle uyumsuz. .NET 6 ve .NET 7'yi desteklemesi gereken .NET WebAssembly derleme araçlarını kullanan projelerin çoklu hedefleme kullanması gerekir.

Docker görüntülerini güncelleştirme

Docker kullanan uygulamalar için Dockerfile FROM deyimlerinizi ve betiklerinizi güncelleştirin. ASP.NET Core 7.0 çalışma zamanını içeren bir temel görüntü kullanın. ASP.NET Core 6.0 ile 7.0 arasındaki aşağıdaki docker pull komut farkını göz önünde bulundurun:

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

Hataya neden olan değişiklikleri gözden geçirme

.NET Core 6.0'dan .NET 7.0'a hataya neden olan değişiklikler için bkz . .NET 7'de hataya neden olan değişiklikler. ASP.NET Core ve Entity Framework Core listeye eklenir.