Dukungan .NET Hot Reload untuk ASP.NET Core
.NET Hot Reload menerapkan perubahan kode, termasuk perubahan pada lembar gaya, ke aplikasi yang sedang berjalan tanpa memulai ulang aplikasi dan tanpa kehilangan status aplikasi. Hot Reload didukung untuk semua proyek ASP.NET Core 6.0 dan yang lebih baru.
Umumnya, kode yang diperbarui dijalankan ulang agar berlaku dengan kondisi berikut:
- Beberapa logika startup hanya dijalankan sekali:
- Middleware, kecuali pembaruan kode adalah untuk delegasi middleware sebaris.
- Layanan yang dikonfigurasi.
- Pembuatan dan konfigurasi rute, kecuali pembaruan kode adalah ke delegasi handler rute (misalnya,
OnInitialized
).
- Di Blazor aplikasi, kerangka kerja memicuRazor render komponen secara otomatis.
- Di aplikasi MVC dan Razor Pages, Hot Reload memicu refresh browser secara otomatis.
- Menghapus Razoratribut parameter komponen tidak menyebabkan komponen dirender. Aplikasi harus dimulai ulang.
Untuk informasi selengkapnya tentang skenario yang didukung, lihat Perubahan kode yang didukung (C# dan Visual Basic).
Blazor WebAssembly
Blazor WebAssembly Hot Reload mendukung perubahan kode berikut:
- Jenis baru.
- Kelas berlapis.
- Sebagian besar perubahan pada badan metode, seperti menambahkan, menghapus, dan mengedit variabel, ekspresi, dan pernyataan.
- Perubahan pada isi ekspresi lambda dan fungsi lokal.
- Menambahkan metode statis dan instans ke jenis yang ada.
- Menambahkan bidang, peristiwa, dan properti statis dan instans ke jenis yang sudah ada.
- Menambahkan lambda statis ke metode yang ada.
- Menambahkan lambda yang menangkap
this
ke metode yang sudah ada yang sudah ditangkapthis
sebelumnya.
Perhatikan bahwa ketika atribut dihapus yang sebelumnya mengatur nilai parameter komponen, komponen dibuang dan diinisialisasi ulang untuk mengatur parameter yang dihapus kembali ke nilai defaultnya.
Perubahan kode berikut tidak didukung untuk Blazor WebAssembly aplikasi:
- Menambahkan operator baru
await
atauyield
ekspresi kata kunci. - Mengubah nama parameter metode.
Blazor WebAssembly Hot Reload mendukung perubahan kode berikut:
- Jenis baru.
- Kelas berlapis.
- Sebagian besar perubahan pada badan metode, seperti menambahkan, menghapus, dan mengedit variabel, ekspresi, dan pernyataan.
- Perubahan pada isi ekspresi lambda dan fungsi lokal.
- Menambahkan metode statis dan instans ke jenis yang ada.
- Menambahkan bidang statis ke jenis yang sudah ada.
- Menambahkan lambda statis ke metode yang ada.
- Menambahkan lambda yang menangkap
this
ke metode yang sudah ada yang sudah ditangkapthis
sebelumnya.
Perhatikan bahwa ketika atribut dihapus yang sebelumnya mengatur nilai parameter komponen, komponen dibuang dan diinisialisasi ulang untuk mengatur parameter yang dihapus kembali ke nilai defaultnya.
Perubahan kode berikut tidak didukung untuk Blazor WebAssembly aplikasi:
- Menambahkan operator baru
await
atauyield
ekspresi kata kunci. - Mengubah nama parameter metode.
- Menambahkan bidang, peristiwa, atau properti instans (non-
static
).
Blazor WebAssembly Hot Reload mendukung perubahan kode berikut:
- Sebagian besar perubahan pada badan metode, seperti menambahkan, menghapus, dan mengedit variabel, ekspresi, dan pernyataan.
- Perubahan pada isi ekspresi lambda dan fungsi lokal.
Perubahan kode berikut tidak didukung untuk Blazor WebAssembly aplikasi:
- Menambahkan lambda baru atau fungsi lokal.
- Menambahkan operator baru
await
atauyield
ekspresi kata kunci. - Mengubah nama parameter metode.
- Perubahan di luar badan metode.
- Menambahkan bidang, peristiwa, atau properti instans (non-
static
).
.NET CLI
Hot Reload diaktifkan menggunakan dotnet watch
perintah :
dotnet watch
Untuk memaksa aplikasi membangun kembali dan menghidupkan ulang, gunakan kombinasi keyboard Ctrl+R di shell perintah.
Saat pengeditan kode yang tidak didukung dibuat, yang disebut pengeditan kasar, dotnet watch
menanyakan apakah Anda ingin memulai ulang aplikasi:
- Ya: Memulai ulang aplikasi.
- Tidak: Tidak memulai ulang aplikasi dan membiarkan aplikasi berjalan tanpa perubahan diterapkan.
- Selalu: Menghidupkan ulang aplikasi sesuai kebutuhan saat pengeditan kasar terjadi.
- Tidak Pernah: Tidak memulai ulang aplikasi dan menghindari perintah di masa mendatang.
Untuk menonaktifkan dukungan untuk Hot Reload, teruskan --no-hot-reload
opsi ke dotnet watch
perintah :
dotnet watch --no-hot-reload
Nonaktifkan Hot Reload
Pengaturan berikut dalam Properties/launchSettings.json
menonaktifkan Hot Reload:
"hotReloadEnabled" : false
Sumber daya tambahan
Untuk informasi selengkapnya, lihat sumber daya berikut ini dalam dokumentasi Visual Studio:
- Video YouTube .NET 6 Hot Reload di Visual Studio 2022, VS Code, dan NOTEPAD?!?
- Memperkenalkan pengalaman .NET Hot Reload untuk mengedit kode saat runtime
- Menulis dan men-debug kode yang berjalan dengan Hot Reload di Visual Studio
- Pembaruan untuk Blazor & Razor editor + Hot Reload untuk ASP.NET
- Uji Eksekusi dengan Hot Reload
ASP.NET Core