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 memicuRazorrender 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 ditangkap this 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:

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 ditangkap this 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 atau yield 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 atau yield 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: