Perubahan kode yang didukung (C# dan Visual Basic)
Mekanisme Hot Reload, yang sebelumnya disebut Edit dan Lanjutkan, menangani sebagian besar jenis perubahan kode dalam isi metode. Sebagian besar perubahan di luar badan metode, dan beberapa perubahan dalam badan metode, tidak dapat diterapkan selama penelusuran kesalahan, namun. Untuk menerapkan perubahan yang tidak didukung tersebut, Anda harus menghentikan penelusuran kesalahan dan memulai ulang dengan versi kode yang baru.
Mekanisme Edit dan Lanjutkan menangani sebagian besar jenis perubahan kode dalam badan metode. Sebagian besar perubahan di luar badan metode, dan beberapa perubahan dalam badan metode, tidak dapat diterapkan selama penelusuran kesalahan, namun. Untuk menerapkan perubahan yang tidak didukung tersebut, Anda harus menghentikan penelusuran kesalahan dan memulai ulang dengan versi kode yang baru.
Perubahan yang didukung pada kode
Tabel berikut menunjukkan perubahan yang mungkin dilakukan pada kode C# dan Visual Basic selama sesi penelusuran kesalahan tanpa memulai ulang sesi.
Elemen atau fitur bahasa | Operasi edit yang didukung | Pembatasan |
---|---|---|
Jenis | Menambahkan metode, bidang, konstruktor, dan lainnya | Ya |
Iterator | Tambahkan atau modifikasi | No |
ekspresi asinkron/menunggu | Tambahkan atau modifikasi | Ya |
Objek dinamis | Tambahkan atau modifikasi | No |
ekspresi lambda | Tambahkan atau modifikasi | Ya |
Ekspresi LINQ | Tambahkan atau modifikasi | Sama seperti ekspresi lambda |
Generik | Tambahkan atau modifikasi | Ya |
Elemen atau fitur bahasa | Operasi edit yang didukung | Pembatasan |
---|---|---|
Jenis | Menambahkan metode, bidang, konstruktor, dan lainnya | Ya |
Iterator | Tambahkan atau modifikasi | No |
ekspresi asinkron/menunggu | Tambahkan atau modifikasi | Ya |
Objek dinamis | Tambahkan atau modifikasi | No |
ekspresi lambda | Tambahkan atau modifikasi | Ya |
Ekspresi LINQ | Tambahkan atau modifikasi | Sama seperti ekspresi lambda |
Catatan
Fitur bahasa yang lebih baru seperti interpolasi string dan operator kondisi null umumnya didukung oleh Edit dan Lanjutkan. Untuk informasi terbaru, lihat halaman Enc Supported Edits.
Peningkatan .NET 6+
Peningkatan di .NET 6+ dan Visual Studio 2022 dan versi yang lebih baru mencakup dukungan untuk lebih banyak jenis pengeditan yang melampaui apa yang awalnya mungkin di versi Visual Studio yang lebih lama. Peningkatan ini tersedia untuk Hot Reload dan pengalaman Edit dan Lanjutkan.
Pengalaman .NET 6+ Hot Reload didukung oleh mekanisme Edit dan Lanjutkan dan Roslyn. Pengeditan yang Didukung mencantumkan jenis pengeditan yang saat ini didukung oleh Roslyn dan potensi penyempurnaan di masa mendatang.
Perubahan yang tidak didukung pada kode
Perubahan berikut tidak dapat diterapkan ke kode C# dan Visual Basic selama sesi penelusuran kesalahan.
Perubahan pada pernyataan saat ini atau pernyataan aktif lainnya.
Pernyataan aktif adalah pernyataan apa pun dalam fungsi pada tumpukan panggilan yang dipanggil untuk masuk ke pernyataan saat ini.
Pernyataan saat ini muncul pada latar belakang kuning di jendela sumber. Pernyataan aktif lainnya muncul di latar belakang berbayang dan berbayang baca-saja. Warna default ini dapat diubah dalam kotak dialog Opsi.
Setiap perubahan yang tidak didukung pada kode menurut elemen bahasa seperti yang diuraikan dalam tabel berikut.
Elemen atau fitur bahasa Operasi edit yang tidak didukung Elemen kode grup Mengubah nama Namespace Tambahkan Namespace layanan, jenis, anggota Delete Antarmuka Mengubah Jenis Tambahkan anggota abstrak atau virtual, tambahkan penimpaan (lihat detail) Jenis Tambahkan destruktor Anggota - Memodifikasi anggota yang mereferensikan jenis interop yang disematkan
- Memodifikasi anggota statis setelah diakses dengan menjalankan kodeAnggota (Visual Basic) - Mengubah anggota dengan pernyataan On Error atau Resume
- Mengubah anggota yang berisi klausa kueri Agregat, Kelompokkan Menurut, Gabung Sederhana, atau Gabungan Grup LINQMetode - Memodifikasi tanda tangan
- Membuat metode abstrak menjadi nonabstrak dengan menambahkan isi metode
- Hapus isi metodeAtribut Tambahkan atau modifikasi Peristiwa atau properti Mengubah parameter jenis, jenis dasar, jenis delegasi, atau jenis pengembalian Operator atau pengindeks Mengubah parameter jenis, jenis dasar, jenis delegasi, atau jenis pengembalian menangkap blok Mengubah saat berisi pernyataan aktif blok try-catch-finally Mengubah saat berisi pernyataan aktif menggunakan pernyataan Tambahkan metode asinkron/lambda Memodifikasi metode asinkron/lambda dalam proyek yang menargetkan .NET Framework 4 dan yang lebih rendah (lihat detail) Iterator Mengubah iterator dalam proyek yang menargetkan .NET Framework 4 dan yang lebih lama (lihat detail) Elemen atau fitur bahasa Operasi edit yang tidak didukung Elemen kode grup Mengubah nama Namespace Tambahkan Namespace layanan, jenis, anggota Delete Generik Tambahkan atau modifikasi Antarmuka Mengubah Jenis Tambahkan anggota abstrak atau virtual, tambahkan penimpaan (lihat detail) Jenis Tambahkan destruktor Anggota - Memodifikasi anggota yang mereferensikan jenis interop yang disematkan
- Memodifikasi anggota statis setelah diakses dengan menjalankan kodeAnggota (Visual Basic) - Mengubah anggota dengan pernyataan On Error atau Resume
- Mengubah anggota yang berisi klausa kueri Agregat, Kelompokkan Menurut, Gabung Sederhana, atau Gabungan Grup LINQMetode - Memodifikasi tanda tangan
- Membuat metode abstrak menjadi nonabstrak dengan menambahkan isi metode
- Hapus isi metodeAtribut Tambahkan atau modifikasi Peristiwa atau properti Mengubah parameter jenis, jenis dasar, jenis delegasi, atau jenis pengembalian Operator atau pengindeks Mengubah parameter jenis, jenis dasar, jenis delegasi, atau jenis pengembalian menangkap blok Mengubah saat berisi pernyataan aktif blok try-catch-finally Mengubah saat berisi pernyataan aktif menggunakan pernyataan Tambahkan metode asinkron/lambda Memodifikasi metode asinkron/lambda dalam proyek yang menargetkan .NET Framework 4 dan yang lebih rendah (lihat detail) Iterator Mengubah iterator dalam proyek yang menargetkan .NET Framework 4 dan yang lebih lama (lihat detail)
Kode tidak aman
Perubahan pada kode yang tidak aman memiliki batasan yang sama dengan perubahan pada kode aman, dengan satu batasan tambahan: Edit dan Lanjutkan tidak mendukung perubahan pada kode tidak aman yang keluar dalam metode yang berisi stackalloc
operator.
Dukungan aplikasi
Aplikasi yang didukung meliputi:
- Aplikasi UWP di Windows 10 atau Windows 11
- Aplikasi x86 dan x64 yang menargetkan desktop .NET Framework 4.6 atau versi yang lebih baru (.NET Framework hanya versi desktop)
Untuk .NET 6 dan yang lebih baru, pengeditan didukung untuk jenis file berikut:
- .cshtml
- .razor
Aplikasi, platform, dan operasi yang tidak didukung
Aplikasi atau platform yang tidak didukung meliputi:
- F#
- .NET Native
- Silverlight 5
- Windows 8.1
- Xamarin.Forms (iOS dan Android)
Untuk ASP.NET dan ASP.NET Core, pengeditan tidak didukung untuk jenis file berikut:
- .aspx
- .ascx
- .aspx
- .ascx
- .cshtml
- .razor
Skenario yang tidak didukung
Edit dan Lanjutkan tidak tersedia dalam skenario penelusuran kesalahan berikut:
Debugging mode campuran (asli/terkelola).
Penelusuran kesalahan di Arm64 tanpa menargetkan .NET 7 atau yang lebih baru.
Penelusuran kesalahan dengan set variabel lingkungan COR_ENABLE_PROFILING .
Menelusuri kesalahan aplikasi menggunakan lampirkan ke proses (Debug > Lampirkan ke Proses) alih-alih menjalankan aplikasi dengan memilih Mulai dari menu Debug. Jika Anda ingin menggunakan Edit dan Lanjutkan saat melampirkan ke proses, variabel lingkungan COMPLUS_ForceENC harus diatur sebelum meluncurkan proses (
set COMPLUS_ForceENC=1
).Penelusuran kesalahan dengan versi rakitan nondeterministik (misalnya, berbasis waktu). Jika Anda ingin menggunakan Edit dan Lanjutkan, pertimbangkan untuk mengatur versi hanya di build Rilis (atau CI) dan pertahankan versi di Build debug tetap konstan.
Menelusuri kesalahan kode yang dioptimalkan.
Penelusuran Kesalahan SQL.
Penelusuran kesalahan file cadangan.
Menelusuri kesalahan aplikasi runtime bahasa umum yang disematkan.
Menelusuri kesalahan versi lama kode Anda setelah versi baru gagal dibuat karena kesalahan build.