Edit dan Lanjutkan: “Perubahan tidak diperbolehkan bila…”

108

Bahkan jika saya membuat proyek WinForms yang bersih, Edit dan Lanjutkan tidak berfungsi dan memberi saya kesalahan:

Perubahan tidak diizinkan ketika debugger telah dilampirkan ke proses yang sudah berjalan atau kode yang sedang di-debug dioptimalkan pada waktu pembuatan atau proses.

  1. Opsi Edit dan Lanjutkan dicentang di Tools → Options → Debugging.
  2. Pengoptimalan tidak diaktifkan.
  3. Sepertinya tidak ada penyiapan profiler terkelola.
  4. Saya menjalankan dalam mode Debug
  5. Saya menjalankan x64 CPU dan Windows XP 32-bit, tetapi menetapkan target platform ke x86 daripada AnyCpu tidak membantu.
  6. Memperbaiki penginstalan Visual Studio tidak membantu.

Saya juga menemukan artikel ini di situs MSDN:

Skenario Tidak Didukung

Edit dan Lanjutkan tidak tersedia dalam skenario debugging berikut ini:

  • Debugging di Windows 98.

  • Debugging mode campuran (asli / terkelola).

  • Debugging SQL.

  • Debugging tempat sampah Dr. Watson.

  • Mengedit kode setelah pengecualian tidak tertangani, ketika opsi "Buka tumpukan panggilan pada pengecualian yang tidak tertangani" tidak dipilih.

  • Debugging aplikasi runtime tertanam.

  • Debugging aplikasi dengan Lampirkan ke daripada menjalankan aplikasi dengan Mulai dari menu Debug.

  • Debugging kode yang dioptimalkan.

  • Men-debug kode yang dikelola jika targetnya adalah aplikasi 64-bit. Jika Anda ingin menggunakan Edit dan Lanjutkan, Anda harus menyetel target ke x86. (Project Properties, tab Compile, pengaturan Advanced Compiler.).

  • Debugging versi lama kode Anda setelah versi baru gagal dibuat karena kesalahan build.

Tapi saya bisa menjawab "Tidak" untuk setiap item dalam daftar ini.

Ini berhasil sebelumnya, tetapi beberapa hari yang lalu berhenti berfungsi, dan saya tidak tahu apa alasannya.

nightcoder
sumber
2
Apakah Anda menjalankan mode Rilis? Apakah Anda menjalankan X64?
Sam Saffron
Apakah metode yang Anda coba E&C benar-benar singkat? mungkin itu menjadi inline (meskipun saya pikir inlining tidak terjadi pada debug)
Sam Saffron
Itu tidak bekerja pada metode apa pun, baik sangat pendek atau sangat panjang.
nightcoder
Apakah Anda sudah mencoba instalasi perbaikan?
Richard Anthony Hein
3
Saya rasa saya harus menambahkan bahwa E&C adalah fitur yang cukup kompleks. Matriks pengujian debugger sangat besar, dan membuat E&C berfungsi di setiap kombinasi akan sangat sulit. Tapi ini juga fitur yang sangat penting, jadi kami mengambil banyak batasan untuk memastikannya akan dikirimkan. Dalam batasan yang kami tempatkan di atasnya, ini adalah salah satu fitur dengan kualitas tertinggi yang kami kirimkan.
Jay Bazuzi

Jawaban:

21

Saya akhirnya harus menyelesaikan masalah: UNINSTALL Gallio

Gallio tampaknya memiliki cukup banyak sisi kasar dan lebih baik tidak menggunakan MbUnit 3.0 tetapi menggunakan kerangka kerja MbUnit 2.0 tetapi menggunakan runner gallio, yang Anda jalankan tanpa menginstal dari penginstal (yang juga menginstal plugin studio visual).

Kebetulan, saya mengalami masalah bahkan setelah "menonaktifkan" plugin Galio. Hanya pencopotan pemasangan yang menyelesaikan masalah.

PS. Diedit oleh nightcoder:
Dalam kasus saya menonaktifkan TypeMock Isolator (kerangka kerja mengejek) akhirnya membantu ! Edit & Lanjutkan sekarang bekerja !!!

Inilah jawaban dari dukungan TypeMock:

Setelah melihat lebih jauh ke dalam masalah edit dan lanjutkan, dan membicarakannya dengan Microsoft, kami mencapai kesimpulan bahwa itu tidak dapat diselesaikan untuk Isolator. Isolator mengimplementasikan profiler CLR, dan menurut penelitian kami, setelah profiler CLR diaktifkan dan dipasang, edit dan lanjutkan secara otomatis dinonaktifkan. Saya minta maaf untuk mengatakan ini tidak lagi dianggap bug, melainkan batasan Isolator.

nightcoder
sumber
69

Solusi Berlaku Lainnya

Di bawah ini adalah daftar kemungkinan solusi yang tidak lengkap dan tidak berurutan untuk dicoba jika Anda * mencoba memperbaiki Edit & Lanjutkan dengan cepat.

  • Pastikan Anda berada dalam Mode Debug
  • Pastikan Anda tidak meluncurkan proses mode campuran
  • Coba setel target CPU ke x86 daripada AnyCPU (pada mesin x64)
  • Hapus centang pada kotak centang Optimize Code untuk Debug Mode di Project Properties-> Debug
  • Hapus centang Aktifkan Pengoptimalan di Pengaturan Kompilator Lanjutan
  • (ASP.NET) Periksa jawaban nightcoder jika memang demikian
  • (ASP.NET) Periksa jawaban ini (oleh matrixugly) jika itu masalahnya
  • (ASP.NET) Pastikan Anda telah mengaktifkan Edit dan Lanjutkan di tab Web (vs2010)
  • (ASP.NET) Buka Properti> Web> Server , dan pastikan bahwa Aktifkan dan lanjutkan dicentang di bawah Gunakan Server Pengembangan Visual Studio .
  • (ASP.NET WebAPI) Pastikan Anda telah berhenti di metode Pengontrol menggunakan breakpoint, sebelum mencoba mengeditnya.
  • (vs2017) Buka Alat> Opsi> Debugging dan hapus centang ( hapus centang) 'Edit dan Lanjutkan'. Ini sebenarnya kebalikan dari saran 'konvensional' (lihat beberapa poin lain di posting ini). Ini tidak memungkinkan Anda untuk benar-benar membuat perubahan dalam program Anda yang sedang berjalan (yaitu tidak hot-swap perubahan kode yang Anda buat) - ini hanya memungkinkan Anda untuk mengedit kode Anda (yaitu mencegah pesan yang mengganggu dan "mengunci" editor Anda ).
  • Buka Alat> Opsi> Debugging> Umum dan pastikan Memerlukan file sumber agar sama persis dengan versi asli tidak dicentang.
  • Centang Aktifkan pengalokasi heap debug Windows (Khusus asli) [VS Community 2017]
  • Apakah Anda menggunakan Microsoft Fakes? Ini menghambat Edit & Lanjutkan.
  • Membunuh semua * .vshost.exe contoh dengan memilih End Process Pohon di Task Manager . VS akan membuat ulang contoh yang benar.
  • Hapus semua breakpoint dengan Debug-> Delete All Breakpoints
  • Aktifkan dan Lanjutkan ada di menu Alat> Opsi> Debugging dan juga di Setelan Proyek . Pastikan untuk memeriksa kedua tempat tersebut. edit & Lanjutkan tidak didukung dengan pengaturan Intellitrace yang diperluas.
  • Pastikan Info Debug di Project Properties> Build> Advanced> Output> Debug Info disetel ke Full
  • Beberapa plugin mungkin mengganggu. Periksa dengan menonaktifkan / mencopot pemasangan lalu coba lagi solusi lain.
  • Jika Anda tidak cukup memperhatikan, kesalahan yang Anda dapatkan saat mencoba memperbaikinya dapat berubah menjadi sesuatu yang lebih mudah untuk didiagnosis. Misalnya, metode yang berisi ekspresi lambda tidak dapat mendukung edit dan lanjutkan.
  • Pastikan variabel Sistem COR_ENABLE_PROFILINGtidak disetel ke 1. Beberapa profiler menyetel ini saat memasang dan membiarkannya seperti itu setelah mencopot pemasangan. Buka prompt perintah dan ketik setuntuk segera memeriksa apakah sistem Anda terpengaruh, jika demikian, hapus variabel atau setel ke 0:

    • Di Windows 8 dan yang lebih baru, cari Sistem (Panel Kontrol).
    • Klik tautan Pengaturan sistem lanjutan .
    • Klik Variabel Lingkungan .
    • Menghapus COR_ENABLE_PROFILING
  • Waspadai skenario yang tidak didukung (seperti yang dilaporkan dalam pertanyaan) dan hasil edit yang tidak didukung .


* oleh 'Anda', maksud saya pengunjung halaman yang memukulkan kepalanya pada keyboard untuk menemukan solusi.


Jangan ragu untuk mengedit jawaban ini untuk menambahkan solusi Anda jika tidak tercantum di sini!

beppe9000
sumber
5
Itu COR_ENABLE_PROFILING ... tidak tahu mengapa itu disetel. Terima kasih. Berhenti memukulkan kepalaku pada keyboard sekarang.
Florian Lagg
2
Saya mencoba semua kecuali bekerja. Kemudian saya menyadari bahwa saya harus berada dalam mode istirahat (debug-> hancurkan semua) atau pada titik istirahat. Harap tambahkan ini ke daftar Anda. msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar
1
Berfungsi untuk saya, terima kasih, baris keempat "Hapus centang pada kotak centang Optimize Code untuk Mode Debug di Properti
Proyek-
2
Satu hal yang memecahkannya untuk saya tidak disebutkan di sini: Saya harus menonaktifkan (hapus centang) opsi "Aktifkan Edit dan Lanjutkan" di bawah Alat> Opsi> Debugging. Ini benar-benar kebalikan dari apa yang Anda pikirkan secara intuitif, tetapi inilah yang memperbaikinya untuk saya (yaitu mencegah pesan yang mengganggu itu dan biarkan saya mengedit kode saya).
leo
1
@leo Ini wiki komunitas sehingga Anda dapat mengedit dengan bebas. Bukankah tombol 'edit' berfungsi untuk Anda? Saya melihat Anda memiliki reputasi yang cukup untuk melakukan itu. Ps. Saya menambahkan referensi ke jawaban Anda sehingga dispersi lebih sedikit.
beppe9000
23

Jika Anda sedang men-debug aplikasi ASP.NET, masuk ke properti> web> Server, dan pastikan bahwa "aktifkan dan lanjutkan" dicentang di bawah Gunakan Visual Studio Development Server.

viggity
sumber
3
juga perlu menekan Jeda saat Debugging, kemudian dapat mengedit kode
Alexey Obukhov
Jika saya menggunakan iis lokal, "aktifkan dan lanjutkan" tidak dapat dilakukan
Khoshtarkib
11

Saya memiliki masalah yang sama. Saya bahkan menginstal ulang VS 2008 tetapi masalahnya tidak hilang. Namun, ketika saya menghapus semua break point maka itu mulai bekerja.

Debug->Delete All Breakpoints

Saya pikir itu terjadi karena saya telah menghapus halaman aspx yang memiliki titik jeda dalam kodenya, dan kemudian saya membuat halaman lain dengan nama yang sama. Ini mungkin membingungkan VS 2008.

Amer
sumber
5

Beberapa hal yang perlu diperiksa

  • Pastikan kompilasi Anda disetel ke Debug vs. Rilis
  • Pastikan Anda tidak meluncurkan proses mode campuran
  • Jika pada mesin 64 bit Pastikan untuk menyetel target CPU ke x86 daripada AnyCPU

EDIT

Saya tidak percaya ini penting tetapi pastikan bahwa proses hosting diaktifkan untuk platform target. Mungkin tidak akan membantu.

Jika itu repros untuk proyek baru maka itu mungkin sesuatu yang lebih halus. Saya akan mencoba yang berikut ini.

  • Cadangkan HKCU: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (mungkin ganti namanya saja)
  • Hapus kunci yang sama
  • Coba repro lagi
JaredPar
sumber
2
Apa itu proses mode campuran? Saya bahkan mencoba proyek winforms baru.
nightcoder
Saya tidak memiliki node HKCU: \ Software \ Wow6432Node \
nightcoder
@nightcoder kemudian coba HKCU: \ Software \ Microsoft \ VisualStudio \ 9.0
JaredPar
5

Tidak ada solusi di atas yang berhasil untuk saya (berjalan pada mesin 64x).

Akhirnya saya mengklik 'advanced compiler settings'dan UNCHECKED 'enable optimizations 'dan sekarang saya dapat melangkah melalui kode dan mengedit saat debugging.

Nifle
sumber
2
Ini tampaknya hanya Visual Basic: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Marcel
Bekerja untuk saya! VS2013, VB.Net, Frame 3.5
MiBol
1
Dan di manakah pengaturan ini?
vapcguy
5

"Edit dan Lanjutkan", ketika diaktifkan, hanya akan memungkinkan Anda untuk mengedit kode ketika dalam mode istirahat: misalnya dengan membuat eksekusi dihentikan sementara dengan pengecualian atau dengan menekan breakpoint.

Ini berarti Anda tidak dapat mengedit kode saat eksekusi tidak dihentikan sebentar! Ketika datang ke debugging proyek web (ASP.NET), ini sangat tidak intuitif, karena Anda sering ingin membuat perubahan di antara permintaan. Saat ini, kode yang Anda (mungkin) debug tidak berjalan, tetapi juga tidak dijeda!
Untuk mengatasi ini, Anda dapat mengklik "Hentikan semua" (atau tekan Ctrl+ Alt+ Break). Alternatifnya, setel breakpoint di suatu tempat (misalnya di Page_Loadacara Anda ), lalu muat ulang halaman agar eksekusi berhenti saat mencapai breakpoint, dan sekarang Anda dapat mengedit kode. Bahkan kode dalam .csfile.

Protector satu
sumber
4

Bagi saya, karena alasan yang saya tidak mengerti, pengaturan "Hasilkan info debug" di "Pengaturan Kompilator Lanjutan" disetel ke "hanya pdb" bukan "Penuh".

Secara default, parameter ini selalu disetel ke "Penuh" tetapi poltergeist misterius telah mengubah parameter ini tadi malam. :)

PS Saya menggunakan Visual Basic .Net dengan Visual Studio 2010

Samuel
sumber
4

Jika masalah Anda adalah dengan aplikasi ASP.NET, pastikan Anda telah mengedit dan terus mengaktifkannya di tab web (vs2010). Ada juga pengaturan terpisah untuk debugging ASP.NET di versi sebelumnya.

Salam,

Adam.

Adam
sumber
4

Saya menemukan bahwa meskipun di bawah properti proyek, tab build & debug disetel ke Debug dan semua setelan lainnya sudah benar, saya masih mendapatkan pesan, namun setelah menggali lebih banyak di bawah menu Build pilih Pengelola Konfigurasi ... dan pastikan Debug dipilih di dua tempat di sana juga. cari ... berapa banyak tempat berbeda yang mereka butuhkan untuk menyetel debug ?????? meskipun Anda mengatur Proyek - Konfigurasi ke Debug kemudian di bawah Build - Manajer itu tidak berubah sehingga Anda telah mengubah pengaturan yang sama di sana juga Konfigurasi Proyek - sepertinya masalah microsoft lagi .......

RAL
sumber
4

Masalah ini karena pengaturan Intellitrace

Jika Intellitrace diaktifkan, pastikan hanya event Intellitrace yang dicentang

Jika tidak, ini tidak akan mengizinkan pengeditan dan melanjutkan ..

Jika Anda mengklik opsi Intellitrace, Anda akan melihat peringatan.

KuldeepVerma
sumber
Ini masalahnya, bagi saya!
beppe9000
Mencari semua opsi di Visual Studio Tools untuk "Intellitrace" dan tidak ada opsi seperti itu di VS Community 2017. Sedikit lebih detail di sini membantu.
vapcguy
4

Pemotretan berikut membantu saya menggunakan VS2010:

pergi ke Tools, Options, Debugging, General dan pastikan "Membutuhkan file sumber agar sama persis dengan versi asli" tidak dicentang.

Vinay
sumber
3

Itu terjadi ketika debugger belum mencapai breakpoint atau Anda belum menekan Break All (jeda). Tidak mungkin sesederhana itu, bukan?

Richard Anthony Hein
sumber
Itu terjadi ketika debugger mencapai breakpoint dan saya mencoba mengubah sesuatu di kode.
nightcoder
3

Kesalahan mengatakan kemungkinan penyebabnya adalah: "kode yang sedang di-debug dioptimalkan pada waktu pembuatan atau proses". Buka Properti Proyek-> Debug dan hapus centang pada kotak Kode Optimalkan untuk mode Debug.

pbalaga
sumber
3

Saya mengalami masalah ini di Microsoft Visual Studio 2008 dan solusinya mudah. ketika Anda menjalankan proyek Anda, setel dalam mode "Debug" bukan "Rilis". Solusi orang lain bisa bermanfaat.

pengguna2412450
sumber
2

Jika saya membuat proyek baru, pengeditan saat debugging tidak berfungsi. Jika saya membuat situs web baru, pengeditan saat debugging berfungsi seperti yang diharapkan.

Greg
sumber
1

Dalam kasus saya, hanya mengatur ulang ke pengaturan debugger default dan mengatur IntelliTrace-> hanya peristiwa intellytrace yang membantu

Yuriy Vikulov
sumber
1

Beberapa hal yang sepertinya membantu menggunakan VS2010:

  • pergi ke Tools, Options, Debugging, General dan pastikan "Membutuhkan file sumber agar sama persis dengan versi asli" tidak dicentang.
  • beberapa contoh .vshost.exe dapat ditinggalkan, misalnya melepaskan debugger VS dari proses yang dihentikan. Ini akan mengganggu breakpoint dan kompilasi juga. Gunakan Task Manager, tab Processes untuk mematikan semua instance .vshost.exe dengan mengklik kanan setiap instance dan memilih End Process Tree. VS akan membuat instance baru.
Scott
sumber
1

Saya menghapus kumpulan data dari proyek saya karena saya tidak menggunakannya. Setelah itu saya bisa memodifikasi program saat debugging.

ashkan_jami
sumber
1

Saya melakukan semua perubahan yang disebutkan di setiap jawaban lain dan tidak ada yang berhasil. Apa yang saya pelajari? Aktifkan dan Lanjutkan ada di menu Alat> Opsi> Debugging dan juga di setelan Proyek. Setelah saya mencentang keduanya, Aktifkan dan Lanjutkan berfungsi untuk saya.

stevebot
sumber
3
Pengaturan proyek apa? Anda terlalu kabur
Adaptabi
@Adaptabi Maksudnya jika Anda klik kanan Nama Proyek Anda, klik Properties, lalu (jika itu adalah proyek web) klik Web, ada kotak centang untuk memastikan dicentang untuk "Aktifkan Edit dan Lanjutkan" di sana.
vapcguy
1

Saya mengalami hal ini hari ini - ternyata memiliki Info Debug diatur ke pdb-only (atau tidak ada, saya bayangkan) akan mencegah Edit dan Lanjutkan bekerja.

Pastikan Info Debug Anda disetel ke "penuh" terlebih dahulu!

Properti Proyek> Bangun> Lanjutan> Keluaran> Info Debug

Guy Danus
sumber
1

Tampak tidak masuk akal, tetapi satu-satunya cara adalah menonaktifkan edit dan melanjutkan dari opsi VS 2017 ... Kemudian AspNet edit dan lanjutkan mulai bekerja ...

FRK
sumber
Persis! Ini kontra-intuitif tetapi yang berhasil bagi saya juga adalah menonaktifkan "edit dan lanjutkan". Ini tidak akan melakukan "hot swap" terhadap perubahan yang Anda buat tetapi setidaknya Anda cukup mengedit kode Anda, dan kemudian akan berlaku saat memulai ulang aplikasi Anda.
leo
1

yang berhasil bagi saya adalah menghapus centang "Gunakan Mode Kompatibilitas Terkelola" di bawah

Alat -> Opsi -> Debugging

TBN: mencentang atau menghapus centang "Wajibkan file sumber agar sama persis dengan versi asli" tampaknya tidak memengaruhi E&C

Semoga ini bisa membantu.

B. Cafaro
sumber
1

Aktifkan edit dan Lanjutkan hanya pekerjaan jalankan IIS Express. Jangan bekerja di ISS Lokal atau Host Eksternal.

Ahmad Aghazadeh
sumber
1

Saya mengalami masalah yang mengganggu ini sejak saya meningkatkan VS 2019 saya menjadi 16.4.3 dan membuat saya sangat pusing.
Akhirnya saya memecahkan masalah dengan cara ini:

1. Hentikan Debugging
2. Pilih solusi dari "Solution Explorer"
3. Di jendela Properties, ubah Properti "Konfigurasi aktif" Dari "Rilis | CPU Apa Pun" Menjadi "Debug | Semua CPU"
4 . dalam Debug> Options> General Periksa Mengedit dan Lanjutkan kotak centang

yang bekerja untuk saya, dan berharap bekerja untuk Anda juga.

Masarwa
sumber
0

studio visual jenis interop embed harus disetel ke false

Wilma Fingerdoo
sumber
0

Saya mengalami ini terjadi di file kelas tertaut. Sisa proyek mengizinkan E&C, tetapi saya mendapat kesalahan yang sama saat mengedit file tertaut. Solusinya adalah memecah file yang ditautkan menjadi proyeknya sendiri dan mereferensikan proyek tersebut.

jlo-gmail.dll
sumber
0

Saya menghadapi masalah yang sama. Masalah saya adalah saya dapat mengubah file, tetapi tidak yang lain (keduanya dalam proyek yang sama). Kemudian saya menemukan bahwa file yang tidak dapat saya modifikasi juga merupakan bagian dari proyek lain. Bahwa proyek lain (Unit Test) tidak dimuat, dan cerdas debugger VS menunjukkan kesalahan bahwa perakitan untuk file yang diberikan ini tidak dimuat, dan perubahan tidak diizinkan. Aneh sekali!

Oleh karena itu, saya harus membongkar proyek unit-test dan melanjutkan debugging EnC.

Ajay
sumber
0

Saya memiliki proyek database dalam solusi yang menghentikan proyek formulir web agar tidak diedit.

Saya mengklik "Bongkar" pada proyek database dan semuanya sekarang bekerja dengan baik.

Adam
sumber
0

Untuk VS2017 ini dapat membantu menghapus file .suo dalam solusi Anda, itu berhasil untuk saya. :)

Nieksa
sumber