ASP.NET Core 3.1'den 6.0'a geçiş
Bu makalede, mevcut bir ASP.NET Core 3.1 projesinin ASP.NET Core 6.0'a nasıl güncelleştirilecekleri açıklanmaktadır. ASP.NET Core 5.0'dan 6.0'a yükseltmek için bkz . ASP.NET Core 5.0'dan 6.0'a geçiş.
Önkoşullar
- Visual Studio 2022 ile ASP.NET ve web geliştirme iş yükü.
- .NET 6.0 SDK
içinde .NET SDK sürümünü güncelleştirme global.json
Belirli bir .NET SDK sürümünü hedeflemek için bir global.json
dosyaya güveniyorsanız, özelliğini yüklü .NET 6.0 SDK sürümüne güncelleştirin version
. Örneğin:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Hedef çerçeveyi güncelleştirme
Proje dosyasının Target Framework Takma Adını (TFM) olarak net6.0
güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.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 6.0.0 veya üzeri olarak güncelleştirin. Örneğin:
<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>
Silme bin
ve obj
klasörler
ve obj
klasörlerini bin
silmeniz gerekebilir. NuGet paket önbelleğini temizlemek için komutunu çalıştırın dotnet nuget locals --clear all
.
Minimum barındırma modeli
ASP.NET Core şablonları, yeni minimal barındırma modelini kullanarak kod oluşturur. Minimum barındırma modeli tek Program.cs
bir dosyada birleştirilirStartup.cs
.Program.cs
ConfigureServices
ve Configure
artık kullanılmaz. ASP.NET Core 3.1'den 6.0'a geçiş yapan uygulamaların en düşük barındırma modelini Startup
kullanması gerekmez ve ASP.NET Core 3.1 şablonları tarafından kullanılan Genel Ana Bilgisayar tam olarak desteklenir.
Yeni minimal barındırma modeliyle kullanmak Startup
için bkz . Başlangıç'ı yeni minimal barındırma modeliyle kullanma.
ASP.NET Core 6.0 şablonları tarafından kullanılan aşağıdaki deseni kullanarak yeni minimal barındırma modeline geçiş yapmak için bkz. ASP.NET Core 6.0'da yeni minimal barındırma modeline geçirilen kod örnekleri ve ASP.NET Core 5.0'dan 6.0'a geçiş
Sınıf kitaplıklarını (RCL' ler) güncelleştirme Razor
ASP.NET Core 6.0'ın bir parçası olarak sunulan yeni API'lerden veya özelliklerden yararlanmak için sınıf kitaplıklarını (RCL' ler) geçirin Razor .
Bileşenleri hedefleyen bir RCL'yi güncelleştirmek için:
Proje dosyasında aşağıdaki özellikleri güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Diğer paketleri en son sürümlerine güncelleştirin. En son sürümler NuGet.org bulunabilir.
MVC'yi hedefleyen bir RCL'yi güncelleştirmek için proje dosyasındaki aşağıdaki özellikleri güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Uygulamalar için tüm 5.0 özelliklerini ve 6.0 özelliklerini benimsemek için Blazor aşağıdaki işlemi öneririz:
- Proje şablonlarından birinden Blazor yeni bir 6.0 Blazor projesi oluşturun. Daha fazla bilgi için bkz . ASP.NET Core Blazoriçin Araçlar.
- Yeni 5.0 ve 6.0 özelliklerini benimsemek için değişiklik yaparak uygulamanın bileşenlerini ve kodunu 6.0 uygulamasına taşıyın.
Docker görüntülerini güncelleştirme
Docker kullanan uygulamalar için Dockerfile FROM
deyimlerinizi ve betiklerinizi güncelleştirin. ASP.NET Core 6.0 çalışma zamanını içeren bir temel görüntü kullanın. ASP.NET Core 3.1 ile 6.0 arasındaki aşağıdaki docker pull
komut farkını göz önünde bulundurun:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Ürün adı olarak ".NET"e taşıma işleminin bir parçası olarak Docker görüntüleri depolardan mcr.microsoft.com/dotnet/core
öğesine mcr.microsoft.com/dotnet
taşındı. Daha fazla bilgi için bkz . .NET 5.0 - Docker Depo Adı Değişikliği (dotnet/dotnet-docker #1939).
ASP.NET Core MVC ve Razor Sayfalarda model bağlama değişiklikleri
DateTime
değerler modele UTC saatleri olarak bağlıdır
ASP.NET Core 3.1 ve önceki sürümlerinde değerler, DateTime
saat diliminin sunucu tarafından belirlendiği yerel saat olarak modele bağlıydı. DateTime
giriş biçimlendirmesinden (JSON) ve DateTimeOffset
değerlerden bağlanan değerler UTC saat dilimleri olarak bağlanıyordu.
ASP.NET Core 5.0 ve sonraki sürümlerinde model bağlama, değerleri UTC saat dilimiyle tutarlı bir şekilde bağlar DateTime
.
Önceki davranışı korumak için içindeki Startup.ConfigureServices
öğesini DateTimeModelBinderProvider
kaldırın:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
değiştirmek ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Model bağlama C# 9 kayıt türleri için destek eklemek için şu şekildedir ComplexTypeModelBinderProvider :
- Modası geçmiş olarak notlar.
- Artık varsayılan olarak kaydedilmedi.
öğesinin koleksiyondaki ModelBinderProviders
varlığını ComplexTypeModelBinderProvider
kullanan uygulamaların yeni bağlayıcı sağlayıcısına başvurması gerekir:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
eskimiş
Tek tek kullanıcı hesapları için bir seçenek içeren ASP.NET Core 3.1 şablonları için UseDatabaseErrorPagebir çağrı oluşturur. UseDatabaseErrorPage
artık kullanım dışıdır ve aşağıdaki kodda gösterildiği gibi ve UseMigrationsEndPoint
birleşimiyle AddDatabaseDeveloperPageExceptionFilter
değiştirilmelidir:
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();
}
Daha fazla bilgi için bkz . Eski DatabaseErrorPage ara yazılımı (dotnet/aspnetcore #24987).
ASP.NET Çekirdek Modülü (ANCM)
Visual Studio yüklenirken ASP.NET Çekirdek Modülü (ANCM) seçili bir bileşen değilse veya sistemde ANCM'nin önceki bir sürümü yüklüyse, en son .NET Core Barındırma Paketi Yükleyicisi'ni (doğrudan indirme) indirin ve yükleyiciyi çalıştırın. Daha fazla bilgi için bkz . Barındırma Paketi.
Uygulama adı değişikliği
.NET 6'da içerik WebApplicationBuilder kök yolunu ile DirectorySeparatorCharbitmesi için normalleştirir. Veya WebHostBuilder uygulamasından HostBuilder geçiş yapılan uygulamaların çoğu normalleştirilemediği için aynı uygulama adına sahip olmaz. Daha fazla bilgi için bkz . SetApplicationName
Hataya neden olan değişiklikleri gözden geçirme
Aşağıdaki kaynaklara bakın:
- Identity: Kullanıcı arabiriminin varsayılan Bootstrap sürümü değiştirildi
- Sürüm 3.1'den 5.0'a geçiş için hataya neden olan değişiklikler. ASP.NET Core ve Entity Framework Core da listeye dahil edilir.
- Sürüm 5.0'dan 6.0'a geçiş için hataya neden olan değişiklikler: ASP.NET Core ve Entity Framework Core içerir.
- Duyurular GitHub deposu (aspnet/Announcements,
6.0.0
label): Hataya neden olan ve bozulmayan bilgileri içerir. - Duyurular GitHub deposu (aspnet/Announcements,
5.0.0
label): Hataya neden olan ve bozulmayan bilgileri içerir.
ASP.NET Core