Migrasi dari ASP.NET Core 3.1 ke 6.0
Artikel ini menjelaskan cara memperbarui proyek ASP.NET Core 3.1 yang ada ke ASP.NET Core 6.0. Untuk meningkatkan dari ASP.NET Core 5.0 ke 6.0, lihat Migrasi dari ASP.NET Core 5.0 ke 6.0.
Prasyarat
- Visual Studio 2022 dengan beban kerja ASP.NET serta pengembangan web.
- .NET 6.0 SDK
Memperbarui versi .NET SDK di global.json
Jika Anda mengandalkan global.json
file untuk menargetkan versi .NET SDK tertentu, perbarui version
properti ke versi .NET 6.0 SDK yang diinstal. Contohnya:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Memperbarui kerangka kerja target
Perbarui Moniker Kerangka Kerja Target (TFM) file proyek menjadi net6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Memperbarui referensi paket
Dalam file proyek, perbarui setiap Microsoft.AspNetCore.*
atribut referensi Version
paket , Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
, dan System.Net.Http.Json
ke 6.0.0 atau yang lebih baru. Contohnya:
<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>
Hapus bin
dan obj
folder
Anda mungkin perlu menghapus bin
folder dan obj
. Jalankan dotnet nuget locals --clear all
untuk menghapus cache paket NuGet.
Model hosting minimal
Templat ASP.NET Core menghasilkan kode menggunakan model hosting minimal baru. Model hosting minimal menyaingkan Startup.cs
dan Program.cs
menjadi satu Program.cs
file. ConfigureServices
dan Configure
tidak lagi digunakan. Aplikasi yang bermigrasi dari ASP.NET Core 3.1 ke 6.0 tidak perlu menggunakan model hosting minimal, menggunakan Startup
dan Host Generik yang digunakan oleh templat ASP.NET Core 3.1 didukung sepenuhnya.
Untuk menggunakan Startup
dengan model hosting minimal baru, lihat Menggunakan Startup dengan model hosting minimal baru.
Untuk bermigrasi ke model hosting minimal baru menggunakan pola berikut yang digunakan oleh templat ASP.NET Core 6.0, lihat Sampel kode yang dimigrasikan ke model hosting minimal baru di ASP.NET Core 6.0 dan Migrasi dari ASP.NET Core 5.0 ke 6.0
Memperbarui Razor pustaka kelas (RCL)
Migrasikan Razor pustaka kelas (RCL) untuk memanfaatkan API atau fitur baru yang diperkenalkan sebagai bagian dari ASP.NET Core 6.0.
Untuk memperbarui RCL yang menargetkan komponen:
Perbarui properti berikut dalam file proyek:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Perbarui paket lain ke versi terbarunya. Versi terbaru dapat ditemukan di NuGet.org.
Untuk memperbarui MVC penargetan RCL, perbarui properti berikut dalam file proyek:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Untuk mengadopsi semua fitur 5.0 dan fitur 6.0 untuk Blazor aplikasi, kami merekomendasikan proses berikut:
- Buat proyek 6.0 Blazor baru dari salah Blazor satu templat proyek. Untuk informasi selengkapnya, lihat Alat untuk ASP.NET Core Blazor.
- Pindahkan komponen dan kode aplikasi ke aplikasi 6.0 yang membuat modifikasi untuk mengadopsi fitur 5.0 dan 6.0 baru.
Memperbarui gambar Docker
Untuk aplikasi yang menggunakan Docker, perbarui pernyataan dan skrip Dockerfile FROM
Anda. Gunakan gambar dasar yang menyertakan runtime ASP.NET Core 6.0. Pertimbangkan perbedaan perintah berikut docker pull
antara ASP.NET Core 3.1 dan 6.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Sebagai bagian dari perpindahan ke ".NET" sebagai nama produk, gambar Docker dipindahkan dari mcr.microsoft.com/dotnet/core
repositori ke mcr.microsoft.com/dotnet
. Untuk informasi selengkapnya, lihat .NET 5.0 - Perubahan Nama Repo Docker (dotnet/dotnet-docker #1939).
Perubahan pengikatan model di ASP.NET Core MVC dan Razor Pages
DateTime
nilai terikat model sebagai waktu UTC
Dalam ASP.NET Core 3.1 dan yang lebih lama, DateTime
nilai terikat model sebagai waktu lokal, di mana zona waktu ditentukan oleh server. DateTime
nilai terikat dari pemformatan input (JSON) dan DateTimeOffset
nilai terikat sebagai zona waktu UTC.
Di ASP.NET Core 5.0 dan yang lebih baru, pengikatan model secara konsisten mengikat DateTime
nilai dengan zona waktu UTC.
Untuk mempertahankan perilaku sebelumnya, hapus DateTimeModelBinderProvider
di Startup.ConfigureServices
:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
mengganti ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Untuk menambahkan dukungan untuk pengikatan model jenis catatan C# 9, adalah ComplexTypeModelBinderProvider :
- Diannotasi sebagai usang.
- Tidak lagi terdaftar secara default.
Aplikasi yang mengandalkan keberadaan ComplexTypeModelBinderProvider
dalam ModelBinderProviders
koleksi perlu mereferensikan penyedia pengikat baru:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
usang
Templat ASP.NET Core 3.1 yang menyertakan opsi untuk akun pengguna individual menghasilkan panggilan ke UseDatabaseErrorPage. UseDatabaseErrorPage
sekarang usang dan harus diganti dengan kombinasi AddDatabaseDeveloperPageExceptionFilter
dan UseMigrationsEndPoint
, seperti yang ditunjukkan dalam kode berikut:
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();
}
Untuk informasi selengkapnya, lihat Middleware DatabaseErrorPage usang (dotnet/aspnetcore #24987).
Modul Inti ASP.NET (ANCM)
Jika ASP.NET Core Module (ANCM) bukan komponen yang dipilih saat Visual Studio diinstal atau jika versi ANCM sebelumnya diinstal pada sistem, unduh Penginstal Bundel Hosting .NET Core terbaru (unduh langsung) dan jalankan alat penginstal. Untuk informasi selengkapnya, lihat Bundel Hosting.
Perubahan nama aplikasi
Di .NET 6, WebApplicationBuilder menormalkan jalur akar konten ke akhir dengan DirectorySeparatorChar. Sebagian besar aplikasi yang bermigrasi dari HostBuilder atau WebHostBuilder tidak akan memiliki nama aplikasi yang sama karena tidak dinormalisasi. Untuk informasi selengkapnya, lihat SetApplicationName
Tinjau perubahan yang melanggar
Lihat sumber daya berikut:
- Identity: Versi Bootstrap default UI diubah
- Melanggar perubahan untuk migrasi dari versi 3.1 ke 5.0. ASP.NET Core dan Entity Framework Core juga disertakan dalam daftar.
- Melanggar perubahan untuk migrasi dari versi 5.0 ke 6.0: Termasuk ASP.NET Core dan Entity Framework Core.
- Pengumuman repositori GitHub (aspnet/Pengumuman,
6.0.0
label): Termasuk informasi yang melanggar dan tidak melanggar. - Pengumuman repositori GitHub (aspnet/Pengumuman,
5.0.0
label): Termasuk informasi yang melanggar dan tidak melanggar.
ASP.NET Core