Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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, namun tidak dapat diterapkan selama debugging. 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, namun tidak dapat diterapkan selama debugging. 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 debugging tanpa harus memulai ulang.
| Elemen atau fitur bahasa | Operasi edit yang didukung | Keterbatasan |
|---|---|---|
| Jenis | Menambahkan metode, bidang, konstruktor, dan lainnya | Ya |
| Iterator | Menambahkan atau mengubah | Tidak |
| asinkron/menunggu ekspresi | Menambahkan atau mengubah | Ya |
| Objek dinamis | Menambahkan atau mengubah | Tidak |
| ekspresi lambda | Menambahkan atau mengubah | Ya |
| Ekspresi LINQ | Menambahkan atau mengubah | Sama seperti ekspresi lambda |
| Generik | Menambahkan atau mengubah | Ya |
| Elemen atau fitur bahasa | Operasi edit yang didukung | Keterbatasan |
|---|---|---|
| Jenis | Menambahkan metode, bidang, konstruktor, dan lainnya | Ya |
| Iterator | Menambahkan atau mengubah | Tidak |
| asinkron/menunggu ekspresi | Menambahkan atau mengubah | Ya |
| Objek dinamis | Menambahkan atau mengubah | Tidak |
| ekspresi lambda | Menambahkan atau mengubah | Ya |
| Ekspresi LINQ | Menambahkan atau mengubah | Sama seperti ekspresi lambda |
Nota
Fitur bahasa yang lebih baru seperti interpolasi string dan operator null-conditional umumnya didukung oleh Edit dan Lanjutkan. Untuk informasi terbaru, lihat halaman Pengeditan yang Didukung Enc. Untuk .NET Framework, fitur yang didukung adalah subset dari fitur yang tercantum dan bergantung pada versi kompilator.
Peningkatan .NET 6 dan versi lebih baru
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 and Continue 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 debugging.
Perubahan pada pernyataan saat ini atau pernyataan aktif lainnya.
Pernyataan aktif adalah setiap pernyataan dalam fungsi di tumpukan panggilan yang digunakan untuk mencapai pernyataan saat ini.
Pernyataan saat ini muncul pada latar belakang kuning di jendela sumber. Pernyataan aktif lainnya muncul di latar belakang berbayang dan hanya dapat dibaca. 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.
Untuk .NET 6+ dan Visual Studio 2022, lihat Pengeditan yang Didukung untuk jenis pengeditan yang saat ini didukung dan tidak didukung.
Elemen atau fitur bahasa Operasi edit yang tidak didukung Semua elemen kode Mengganti nama Namespace Tambah Namespace, jenis, anggota Menghapus Antarmuka Mengubah Jenis Tambahkan anggota abstrak atau virtual, tambahkan metode override (lihat detail di dan) Jenis Menambahkan destruktor Anggota - Memodifikasi anggota yang mereferensikan jenis interop yang disematkan
- Memodifikasi anggota statis setelah diakses dengan menjalankan kodeAnggota (Visual Basic) - Memodifikasi anggota dengan menggunakan 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 Menambahkan atau mengubah 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 blok penangkapan Ubah saat berisi pernyataan aktif blok try-catch-finally Ubah saat berisi pernyataan aktif menggunakan pernyataan Tambah metode asinkron/lambda Ubah 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 versi sebelumnya (lihat detail ) Elemen atau fitur bahasa Operasi edit yang tidak didukung Semua elemen kode Mengganti nama Namespace Tambah Namespace, jenis, anggota Menghapus Generik Menambahkan atau mengubah Antarmuka Mengubah Jenis Tambahkan anggota abstrak atau virtual, tambahkan metode override (lihat detail di dan) Jenis Menambahkan destruktor Anggota - Memodifikasi anggota yang mereferensikan jenis interop yang disematkan
- Memodifikasi anggota statis setelah diakses dengan menjalankan kodeAnggota (Visual Basic) - Memodifikasi anggota dengan menggunakan 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 Menambahkan atau mengubah 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 blok penangkapan Ubah saat berisi pernyataan aktif blok try-catch-finally Ubah saat berisi pernyataan aktif menggunakan pernyataan Tambah metode asinkron/lambda Ubah 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 versi sebelumnya (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 operator stackalloc.
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
- .pisau cukur
Aplikasi, platform, dan operasi yang tidak didukung
Aplikasi atau platform yang tidak didukung meliputi:
- F#
- Asli .NET
- 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
- .pisau cukur
Skenario yang tidak didukung
Edit dan Lanjutkan tidak tersedia dalam skenario debagging berikut:
Penelusuran kesalahan mode campuran (asli/terkelola).
Debugging pada Arm64 tanpa menargetkan .NET 7 atau yang lebih baru.
Debugging dengan variabel lingkungan COR_ENABLE_PROFILING yang disetel.
Men-debug 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).Debugging dengan versi assembly yang 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.
Debugging kode yang telah dioptimalkan.
Pemecahan masalah SQL.
Men-debug file cadangan.
Men-debug aplikasi runtime yang disematkan.
Men-debug versi lama kode Anda setelah versi baru gagal dibuat karena kesalahan build.