Düzenle ve Devam Et: "Değişikliklere izin verilmez ..."


108

Temiz bir WinForms projesi oluştursam bile, Düzenle ve Devam Et çalışmıyor ve bana şu hatayı veriyor:

Hata ayıklayıcı zaten çalışan bir işleme eklendiğinde veya hata ayıklanmakta olan kod derleme ya da çalışma zamanında optimize edildiğinde değişikliklere izin verilmez.

  1. Düzenle ve Devam Et seçeneği Araçlar → Seçenekler → Hata Ayıklama'da işaretlenmiştir.
  2. Optimizasyon etkinleştirilmedi.
  3. Herhangi bir yönetilen profil oluşturucu ayarlanmamış gibi görünüyor.
  4. Hata Ayıklama modunda çalışıyorum
  5. X64 CPU ve Windows XP 32 bit üzerinde çalışıyorum, ancak platform hedefini AnyCpu yerine x86'ya ayarlamak yardımcı olmuyor.
  6. Visual Studio kurulumunu onarmak yardımcı olmaz.

Bu makaleyi MSDN web sitesinde de buldum :

Desteklenmeyen Senaryolar

Düzenle ve Devam Et, aşağıdaki hata ayıklama senaryolarında kullanılamaz:

  • Windows 98'de hata ayıklama.

  • Karışık mod (yerel / yönetilen) hata ayıklama.

  • SQL hata ayıklama.

  • Dr. Watson dökümünde hata ayıklama.

  • "İşlenmeyen istisnalarda çağrı yığınını çöz" seçeneği seçili olmadığında, işlenmeyen bir istisnadan sonra kodu düzenleme.

  • Gömülü bir çalışma zamanı uygulamasında hata ayıklama.

  • Uygulamayı Hata Ayıkla menüsünden Başlat ile çalıştırmak yerine Ekle ile bir uygulamanın hatalarını ayıklama.

  • Optimize edilmiş kodda hata ayıklama.

  • Hedef 64 bitlik bir uygulama olduğunda yönetilen kodda hata ayıklama. Düzenle ve Devam Et'i kullanmak istiyorsanız, hedefi x86 olarak ayarlamalısınız. (Proje Özellikleri, Derleme sekmesi, Gelişmiş Derleyici ayarı.).

  • Yeni bir sürüm oluşturma hataları nedeniyle oluşturulamadığında kodunuzun eski bir sürümünde hata ayıklama.

Ama bu listedeki her maddeye "Hayır" cevabını verebilirim.

Daha önce işe yaradı, ancak birkaç gün önce çalışmayı bıraktı ve nedenini bilmiyorum.


2
Release modunda mı çalışıyorsunuz? X64'te mi çalışıyorsunuz?
Sam Saffron

E&C yapmaya çalıştığınız yöntem gerçekten kısa mı? belki satır içi yapıldı (hata ayıklamada satır içi yapılmadığını düşünüyorum)
Sam Saffron

Ne çok kısa ne de çok uzun herhangi bir yöntem üzerinde çalışmaz.
nightcoder

Henüz bir onarım kurulumunu denediniz mi?
Richard Anthony Hein

3
Sanırım E & C'nin oldukça karmaşık bir özellik olduğunu eklemeliyim. Hata ayıklayıcının test matrisi muazzamdır ve E & C'nin her kombinasyonda çalışmasını sağlamak son derece zor olacaktır. Ama bu da gerçekten önemli bir özellik, bu yüzden sevk edileceğinden emin olmak için birçok sınırlama yaptık. Üzerine koyduğumuz kasıtlı kısıtlamalar dahilinde, gönderdiğimiz en yüksek kaliteli özelliklerden biridir.
Jay Bazuzi

Yanıtlar:


21

Sonunda sorunu çözdüm : Gallio'yu KALDIR

Gallio'nun pek çok pürüzlü kenarı var gibi görünüyor ve MbUnit 3.0'ı kullanmak yerine MbUnit 2.0 çerçevesini kullanmak, ancak yükleyiciden yüklemeden çalıştırdığınız gallio runner'ı kullanmak daha iyidir (ayrıca bir görsel stüdyo eklentisi de yükler).

Bu arada, Gallio eklentisini "devre dışı bıraktıktan" sonra bile sorun yaşadım. Yalnızca kaldırma sorunu çözdü.

PS. Nightcoder tarafından düzenlendi:
Benim durumumda , TypeMock Isolator'ı (alaycı çerçeve) devre dışı bırakmak nihayet yardımcı oldu ! Düzenle ve Devam Et artık çalışıyor !!!

TypeMock desteğinin yanıtı:

Düzenleme ve devam etme sorununu daha ayrıntılı olarak inceledikten ve Microsoft ile bunun hakkında konuştuktan sonra, Isolator için çözülemeyeceği sonucuna vardık. İzolatör bir CLR profil oluşturucu uygular ve araştırmamıza göre, bir CLR profil oluşturucu etkinleştirilip eklendiğinde, düzenleme ve devam etme otomatik olarak devre dışı bırakılır. Bunun artık bir hata olarak kabul edilmediğini, aksine bir İzolatör sınırlaması olduğunu söylediğim için üzgünüm.


69

Diğer Uygulanabilir Çözümler

Aşağıda, Düzenle ve Devam Et'i hızlı bir şekilde düzeltmeye çalışıyorsanız * deneyebileceğiniz olası çözümlerin eksik, sıralanmamış bir listesi bulunmaktadır.

  • Hata Ayıklama Modunda olduğunuzdan emin olun
  • Karma mod süreci başlatmadığınızdan emin olun
  • CPU hedefini AnyCPU yerine x86 olarak ayarlamayı deneyin (x64 makinelerde)
  • İşaretini kaldırın Optimize Kod onay kutusunu Hata Ayıklama modu içinde Projesi Özellikler-> Debug
  • İşaretini kaldırın Optimizasyonları etkinleştirme içinde Gelişmiş Derleyici Ayarları
  • (ASP.NET) Kontrol nightcoder cevabını bu durum buysa
  • (ASP.NET) kontrol edin (matrixugly tarafından) bu cevabı o durumda ise
  • (ASP.NET) Web sekmesinde Düzenle ve Devam Et seçeneğinin etkinleştirildiğinden emin olun (vs2010)
  • (ASP.NET) Özellikler> Web> Sunucular'a gidin ve Etkinleştir ve devam et seçeneğinin Visual Studio Geliştirme Sunucusu Kullan altında işaretlendiğinden emin olun .
  • (ASP.NET WebAPI) Düzenlemeye çalışmadan önce bir kesme noktası kullanarak Denetleyicinin yönteminde durduğunuzdan emin olun.
  • (vs2017) Araçlar> Seçenekler> Hata Ayıklama'ya gidin ve "Düzenle ve Devam Et" seçeneğinin işaretini kaldırın (seçimini kaldırın). Bu aslında 'geleneksel' tavsiyenin tam tersidir (bu yazıdaki diğer bazı noktalara bakın). Çalışan programınızda gerçekten değişiklik yapmanıza izin vermez (yani, yaptığınız kod değişikliklerini çalışırken değiştirmez) - yalnızca kodunuzu düzenlemenize izin verir (yani bu rahatsız edici mesajı önler ve düzenleyicinizi "kilitler" ).
  • Gidin Araçlar> Seçenekler> Debugging'ı> Genel ve emin olun tam kaynak dosyalar gerektir orijinal versiyonu maç işaretli değildir.
  • Windows hata ayıklama yığın ayırıcısını etkinleştir'i işaretleyin (Yalnızca Yerel) [VS Community 2017]
  • Microsoft Fakes kullanıyor musunuz? Edit & Continue'yu engeller.
  • Hepsini öldür * .vshost.exe seçerek örneklerini Bitiş İşlem Ağacı içinde Görev Yöneticisi . VS, doğru bir örneği yeniden oluşturacaktır.
  • Hata Ayıklama ile tüm kesme noktalarını kaldırın -> Tüm Kesme Noktalarını Sil
  • Etkinleştir ve Devam Et , hem Araçlar> Seçenekler> Hata Ayıklama menüsünde hem de Proje Ayarlarında bulunur . Her iki yeri de kontrol ettiğinizden emin olun. edit & Continue, genişletilmiş Intellitrace ayarıyla desteklenmez.
  • Emin olun ayıklama Bilgisi içinde proje özellikleri> Yapı> Gelişmiş> Çıktı> ayıklama Bilgisi ayarlandığında Full
  • Bazı eklentiler karışıyor olabilir. Devre dışı bırakarak / kaldırarak ve ardından diğer çözümleri yeniden deneyerek kontrol edin.
  • Yeterince dikkat etmiyorsanız, bunu düzeltmeye çalışırken aldığınız hata, teşhis edilmesi daha kolay başka bir şeye dönüşebilir. Örneğin, lambda ifadesi içeren bir yöntem, düzenlemeyi ve devam etmeyi destekleyemez.
  • Sistem değişkeninin COR_ENABLE_PROFILINGolarak ayarlanmadığından emin olun 1. Bazı profil oluşturucular bunu yüklerken ayarlar ve kaldırdıktan sonra böyle bırakır. Bir komut istemi açın ve setsisteminizin etkilendiğini hızlıca kontrol etmek için yazın, eğer öyleyse değişkeni kaldırın veya şu şekilde ayarlayın 0:

    • Windows 8 ve üzerinde, Sistem (Denetim Masası) öğesini arayın .
    • Click Gelişmiş sistem ayarları bağlantısını.
    • Ortam Değişkenleri'ni tıklayın .
    • Kaldırmak COR_ENABLE_PROFILING
  • Desteklenmeyen senaryoların (soruda belirtildiği gibi) ve desteklenmeyen düzenlemelerin farkında olun .


* 'siz' derken, çözümü bulmak için başını klavyeye vuran sayfanın ziyaretçisini kastediyorum.


Burada listelenmemişse, geçici çözümünüzü eklemek için bu yanıtı düzenlemekten çekinmeyin!


5
COR_ENABLE_PROFILING idi ... neden ayarlandığına dair hiçbir fikrim yok. Teşekkürler. Şimdi kafamı klavyeye vurmayı bırakıyorum.
Florian Lagg

2
Her şeyi denedim ama çalıştı. Sonra ara modunda (debug-> break all) veya bir kırılma noktasında olmam gerektiğini fark ettim. Lütfen bunu listenize ekleyin. msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar

1
Benim için çalışıyor, teşekkür ederim, dördüncü satır "Proje Özellikleri -> Hata Ayıklama'da Hata Ayıklama Modu için Kodu Optimize Et onay kutusunun işaretini kaldırın"
Aljohn Yamaro

2
Benim için çözüldü bir şey Burada sözü edilmeyen: Ben gerekiyordu dis mümkün (işaretini kaldırın) Araçlar> Seçenekler> hata ayıklama altında “Düzenle etkinleştirme ve Devam Et” seçeneği. Bu, sezgisel olarak düşündüğünüzün tam tersi, ama benim için onu düzelten şey buydu (yani bu sinir bozucu mesajı engelledi ve sadece kodumu düzenlememe izin ver).
leo

1
@leo Bu topluluk wiki'sidir, böylece özgürce düzenleyebilirsiniz. "Düzenle" düğmesi sizin için çalışmıyor mu? Bunu yapmak için yeterince itibarın olduğunu görüyorum. Ps. Cevabınıza bir referans ekledim ki daha az dağılım olsun.
beppe9000

23

Bir ASP.NET uygulamasında hata ayıklıyorsanız, özellikler> web> Sunucular'a gidin ve Visual Studio Geliştirme Sunucusu Kullan altında "etkinleştir ve devam et" seçeneğinin işaretlendiğinden emin olun.


3
ayrıca Hata Ayıklama sırasında Duraklat'a basmanız ve ardından kodu düzenleyebilmeniz gerekir
Alexey Obukhov

Yerel iis kullanırsam, "etkinleştir ve devam et" desable
Khoshtarkib

11

Ben de aynı sorunu yaşadım. VS 2008'i bile yeniden kurdum ama sorun ortadan kalkmadı. Ancak tüm kırılma noktalarını sildiğimde çalışmaya başladı.

Debug->Delete All Breakpoints

Bunun olduğunu düşünüyorum çünkü kodunda kırılma noktaları olan bir aspx sayfasını sildim ve sonra aynı ada sahip başka bir sayfa oluşturdum. Bu muhtemelen VS 2008'i karıştırdı.


5

Kontrol edilecek birkaç şey

  • Derlemenizin Hata Ayıklama ve Yayınlama olarak ayarlandığından emin olun.
  • Karma mod süreci başlatmadığınızdan emin olun
  • 64 bit makinede ise CPU hedefini AnyCPU yerine x86 olarak ayarladığınızdan emin olun.

DÜZENLE

Bunun önemli olduğuna inanmıyorum, ancak hedef platform için barındırma işleminin etkinleştirildiğinden emin olun. Muhtemelen yardım etmeyecek.

Yeni projeler için reprodüksiyon yaparsa, o zaman daha da incelikli bir şey olabilir. Aşağıdakileri denerim.

  • Yedek HKCU: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (belki sadece yeniden adlandırın)
  • Aynı anahtarı sil
  • Reprodüksiyonu tekrar dene

2
Karma mod süreci nedir? Yeni winforms projesini bile denedim.
nightcoder

HKCU: \ Software \ Wow6432Node \ node
nightcoder'a sahip değilim

@nightcoder sonra HKCU: \ Software \ Microsoft \ VisualStudio \ 9.0'ı deneyin
JaredPar

5

Yukarıdaki çözümlerden hiçbiri benim için işe yaramadı (64x makinede çalışıyor).

Sonunda üzerine tıkladım 'advanced compiler settings've KONTROL EDİLMEDİ 'enable optimizations ve şimdi kodda adım adım ilerleyebilir ve hata ayıklama sırasında düzenleme yapabilirim.


2
Bu yalnızca Visual Basic gibi görünüyor: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Marcel

Benim için çalışıyor! VS2013, VB.Net, Çerçeve 3.5
MiBol

1
Ve bu ayarlar nerede?
vapcguy

5

"Düzenle ve Devam Et" etkinleştirildiğinde, kodu yalnızca kesme modundayken düzenlemenize izin verir: örneğin, yürütmeyi bir istisna nedeniyle duraklatarak veya bir kesme noktasına vurarak.

Bu ima edemez yürütme durdurulmuş değilken kodunu düzenleyin! Hata ayıklama (ASP.NET) web projelerinde söz konusu olduğunda, istekler arasında sıklıkla değişiklik yapmak isteyeceğiniz için bu çok mantıksızdır. Şu anda, (muhtemelen) hata ayıklama kodunuz çalışmıyor, ancak duraklatılmadı!
Bunu çözmek için "Tümünü kes" seçeneğini tıklayabilirsiniz (veya Ctrl+ Alt+ tuşlarına basın Break). Alternatif olarak, bir yerde (örneğin, Page_Loadetkinliğinizde) bir kesme noktası ayarlayın , ardından sayfayı yeniden yükleyin, böylece kesme noktasına ulaştığında yürütme duraklatılır ve şimdi kodu düzenleyebilirsiniz. .csDosyalardaki kod bile .


4

Benim için, anlamadığım bir nedenle, "Gelişmiş Derleyici Ayarları" ndaki "Hata ayıklama bilgisi oluştur" ayarı "Tam" yerine "yalnızca pdb" olarak ayarlandı.

Varsayılan olarak, bu parametre her zaman "Tam" olarak ayarlanmıştır, ancak gizemli bir poltergeist dün gece bu parametreyi değiştirmiştir. :)

PS Visual Studio 2010 ile Visual Basic .Net içindeyim


4

Endişeniz bir ASP.NET uygulamasıyla ilgiliyse, web sekmesinde (vs2010) düzenleme ve devam etme özelliğini etkinleştirdiğinizden emin olun. Önceki sürümlerde ASP.NET hata ayıklama için ayrı bir ayar da vardı.

Saygılarımızla,

Adam.


4

Proje özellikleri altında derleme ve hata ayıklama sekmesinin Hata Ayıklama olarak ayarlanmış olmasına ve diğer tüm ayarların doğru olmasına rağmen yine de mesajı alıyorum, ancak Yapı menüsünde biraz daha kazı yaptıktan sonra Yapılandırma Yöneticisi'ni seçin ve Hata Ayıklama'nın seçili olduğundan emin olun. iki yerde de var. git şekil ... hata ayıklamayı ayarlamak için kaç farklı yere ihtiyaçları var ?????? Proje - Yapılandırma'yı Hata Ayıkla olarak ayarlasanız bile, ardından Oluştur - Yönetici altında bu değişmez, böylece aynı ayarı orada da değiştirmiş olursunuz, Proje Yapılandırması - yine bir microsoft sorunu gibi görünüyor .......


4

Bu sorun Intellitrace ayarından kaynaklanmaktadır

Intellitrace etkinse, yalnızca Intellitrace olayının işaretlendiğinden emin olun

Aksi takdirde, bu düzenlemeye ve devam etmeye izin vermez ..

Intellitrace seçeneklerine tıklarsanız uyarıları göreceksiniz.


Benim için sorun bu!
beppe9000

Visual Studio Tools'ta "Intellitrace" için tüm seçenekler arandı ve VS Community 2017'de böyle bir seçenek yok. Burada biraz daha fazla ayrıntı yardımcı olur.
vapcguy

4

Aşağıdaki çekim VS2010'u kullanmama yardımcı oldu:

Araçlar, Seçenekler, Hata Ayıklama, Genel'e gidin ve "Kaynak dosyalarının orijinal sürümle tam olarak eşleşmesini gerektir" seçeneğinin işaretli olmadığından emin olun.


3

Bu, hata ayıklayıcı bir kesme noktasına ulaşmadığında veya Tümünü Kes'e (duraklat) basmadığınızda gerçekleşir. O kadar basit olamaz, değil mi?


Hata ayıklayıcı bir kesme noktasına ulaştığında ve ben koddaki bir şeyi değiştirmeye çalıştığımda olur.
nightcoder

3

Hata, olası bir nedenin "hata ayıklanan kodun derleme veya çalıştırma zamanında optimize edildiğini" söylüyor. Proje Özellikleri-> Hata Ayıkla'ya gidin ve Hata Ayıklama modu için Kodu Optimize Et kutusunun işaretini kaldırın.


3

Bu sorunu Microsoft Visual Studio 2008'de yaşadım ve çözümü çok kolay. projenizi çalıştırdığınızda lütfen "Hata Ayıklama" modunu "Yayınla" değil ayarlayın. Başka bir kişinin çözümü faydalı olabilir.


2

Yeni bir proje oluşturursam, hata ayıklama sırasında yapılan düzenlemeler çalışmıyor. Yeni bir web sitesi oluşturursam, hata ayıklama sırasında yapılan düzenlemeler beklendiği gibi çalışır.


1

Benim durumumda sadece varsayılan hata ayıklayıcı ayarlarına sıfırlamak ve IntelliTrace-> ayarlamak sadece intellytrace olayları yardımcı olur


1

VS2010'u kullanmanıza yardımcı olan bazı şeyler:

  • Araçlar, Seçenekler, Hata Ayıklama, Genel'e gidin ve "Kaynak dosyalarının orijinal sürümle tam olarak eşleşmesini gerektir" seçeneğinin işaretli olmadığından emin olun.
  • birden çok .vshost.exe örneği, örneğin VS hata ayıklayıcısının durdurulmuş bir işlemden ayrılmasına neden olabilir. Bu, kesme noktalarına ve derlemelere de müdahale eder. Her örneği sağ tıklayıp İşlem Ağacını Sonlandır'ı seçerek .vshost.exe dosyasının tüm örneklerini öldürmek için Görev Yöneticisi, İşlemler sekmesini kullanın. VS, yeni bir örnek oluşturacak.

1

Kullanmadığım için projemden bir veri kümesini kaldırdım. Bundan sonra, hata ayıklama sırasında programı değiştirebilirim.


1

Diğer her yanıtta bahsedilen tüm değişiklikleri yaptım ve hiçbiri işe yaramadı. Ne öğrendim? Etkinleştir ve Devam Et , hem Araçlar> Seçenekler> Hata Ayıklama menüsünde ve ayrıca Proje ayarlarında bulunur. İkisini de kontrol ettikten sonra, Etkinleştir ve Devam et benim için çalıştı.


3
Hangi proje ayarları? Çok belirsizsin
Adaptabi

@Adaptabi Proje Adınıza sağ tıklarsanız, Özellikler'e tıklarsanız, ardından (bir web projesiyse) Web'e tıklarsanız, orada "Düzenlemeyi ve Devam Etmeyi Etkinleştir" seçeneğinin işaretlendiğinden emin olmak için bir onay kutusu vardır.
vapcguy

1

Bugün bununla karşılaştım - Hata Ayıklama Bilgisinin yalnızca pdb'ye (ya da hiçbirine) ayarlanmasının Düzenleme ve Devam Et'in çalışmasını engelleyeceği ortaya çıktı.

Önce Hata Ayıklama Bilgilerinizin "tam" olarak ayarlandığından emin olun!

Proje Özellikleri> Oluştur> Gelişmiş> Çıktı> Hata Ayıklama Bilgileri


1

Mantıksız görünüyor, ancak tek yolu düzenlemeyi devre dışı bırakmak ve VS 2017 seçeneklerinden devam etmekti ... Sonra AspNet düzenle ve devam et çalışmaya başladı ...


Kesinlikle! Mantığa aykırı ama benim için de işe yarayan şey "düzenleme ve devam etme" özelliğini devre dışı bırakmak oldu . Yaptığınız değişiklikleri "çalışırken değiştirmez", ancak en azından kodunuzu düzenleyebilirsiniz ve ardından uygulamanızı yeniden başlattığınızda etkili olur.
leo

1

benim için işe yarayan şey, altında "Yönetilen Uyumluluk Modunu Kullan" seçeneğinin işaretini kaldırmaktı

Araçlar -> Seçenekler -> Hata Ayıklama

TBN: "Kaynak dosyanın orijinal sürümle tam olarak eşleşmesini gerektir" seçeneğinin işaretlenmesi veya işaretinin kaldırılması E & C'yi etkilemiyor gibi görünüyor

Umarım bu yardımcı olabilir.


1

Düzenlemeyi etkinleştirin ve Devam et yalnızca IIS Express çalıştırın. Yerel ISS veya Harici Ana Bilgisayarda çalışmayın.


1

VS 2019'umu 16.4.3'e yükselttiğimden beri bu can sıkıcı sorunu yaşadım ve bana çok fazla baş ağrısına neden oldu.
: Son olarak sorunu bu şekilde çözülmüş

1. Durdurma hata ayıklama
2. "Solution Explorer" dan çözüm
3'tür Özellikler penceresi değişikliği "Aktif yapılandırma" Dan Mülkiyet | "Herhangi bir CPU Release" To "ayıklama | Herhangi CPU"
4 Hata Ayıklama> Seçenekler> Genel'de Benim için çalışan Düzenle ve Devam Et onay kutusunu işaretleyin

ve umarım sizin için de işe yarar.



0

Bunu bağlantılı bir sınıf dosyasında yaşadım. Projenin geri kalanı E & C'ye izin verdi, ancak bağlantılı dosyayı düzenlerken aynı hatayı aldım. Çözüm, bağlantılı dosyayı kendi projesine bölmek ve projeye referans vermekti.


0

Ben de aynı problemle karşılaştım. Benim sorunum, bir dosyayı değiştirebilmemdi, ancak başka bir dosyayı değiştirememekti (her ikisi de aynı projede). Daha sonra değiştiremediğim dosyanın da başka bir projenin parçası olduğunu öğrendim. Başka bir projenin (Birim Testi) yüklenmediğini ve akıllı VS hata ayıklayıcısının, bu verilen dosya için derlemenin yüklenmediğini ve değişikliklere izin verilmediğini gösterir. Ne kadar tuhaf!

Bu nedenle, birim testi projesini kaldırmam ve EnC hata ayıklamasına devam etmem gerekiyordu.


0

Çözümde, web formları projesinin düzenlenmesini durduran bir veritabanı projem vardı.

Veritabanı projesinde "Kaldır" ı tıkladım ve şimdi her şey güzel çalışıyor.


0

VS2017 için, çözümünüzdeki .suo dosyasını kaldırmanıza yardımcı olabilir, benim için çalıştı. :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.