Desteklenen kod değişiklikleri (C# ve Visual Basic)
Daha önce Düzenle ve Devam Et olarak adlandırılan Çalışırken Yeniden Yükleme mekanizması, yöntem gövdeleri içindeki çoğu kod değişikliği türünü işler. Ancak yöntem gövdeleri dışındaki değişikliklerin çoğu ve yöntem gövdeleri içindeki birkaç değişiklik hata ayıklama sırasında uygulanamaz. Bu desteklenmeyen değişiklikleri uygulamak için hata ayıklamayı durdurmanız ve kodun yeni bir sürümüyle yeniden başlatmanız gerekir.
Düzenle ve Devam Et mekanizması, yöntem gövdeleri içindeki çoğu kod değişikliği türünü işler. Ancak yöntem gövdeleri dışındaki değişikliklerin çoğu ve yöntem gövdeleri içindeki birkaç değişiklik hata ayıklama sırasında uygulanamaz. Bu desteklenmeyen değişiklikleri uygulamak için hata ayıklamayı durdurmanız ve kodun yeni bir sürümüyle yeniden başlatmanız gerekir.
Kodda desteklenen değişiklikler
Aşağıdaki tabloda, bir hata ayıklama oturumu sırasında oturumu yeniden başlatmadan C# ve Visual Basic kodunda yapılabilecek değişiklikler gösterilmektedir.
Dil öğesi veya özelliği | Desteklenen düzenleme işlemi | Sınırlamalar |
---|---|---|
Türler | Yöntemler, alanlar, oluşturucular ve daha fazlasını ekleme | Evet |
Yineleyiciler | Ekleme veya değiştirme | No |
async/await ifadeleri | Ekleme veya değiştirme | Evet |
Dinamik nesneler | Ekleme veya değiştirme | No |
lambda ifadeleri | Ekleme veya değiştirme | Evet |
LINQ ifadeleri | Ekleme veya değiştirme | Lambda ifadeleriyle aynı |
Genel Türler | Ekleme veya değiştirme | Evet |
Dil öğesi veya özelliği | Desteklenen düzenleme işlemi | Sınırlamalar |
---|---|---|
Türler | Yöntemler, alanlar, oluşturucular ve daha fazlasını ekleme | Evet |
Yineleyiciler | Ekleme veya değiştirme | No |
async/await ifadeleri | Ekleme veya değiştirme | Evet |
Dinamik nesneler | Ekleme veya değiştirme | No |
lambda ifadeleri | Ekleme veya değiştirme | Evet |
LINQ ifadeleri | Ekleme veya değiştirme | Lambda ifadeleriyle aynı |
Dekont
Dize ilişkilendirme ve null koşullu işleçler gibi daha yeni dil özellikleri genellikle Düzenle ve Devam Et tarafından desteklenir. En güncel bilgiler için Enc Desteklenen Düzenlemeler sayfasına bakın.
.NET 6+ geliştirmeleri
.NET 6+ ve Visual Studio 2022 ve sonraki sürümlerdeki geliştirmeler, Visual Studio'nun eski sürümlerinde mümkün olanın ötesine geçebilecek daha fazla düzenleme türü için destek içerir. Bu iyileştirmeler hem Çalışırken Yeniden Yükleme hem de Düzenle ve Devam Et deneyimlerinde kullanılabilir.
.NET 6+ Çalışırken Yeniden Yükleme deneyimi, Düzenle ve Devam Et mekanizması ve Roslyn tarafından desteklenir. Desteklenen Düzenlemeler , Roslyn tarafından desteklenen düzenleme türlerini ve gelecekteki olası geliştirmeleri listeler.
Kodda desteklenmeyen değişiklikler
Hata ayıklama oturumu sırasında C# ve Visual Basic koduna aşağıdaki değişiklikler uygulanamaz.
Geçerli deyimde veya diğer etkin deyimlerde yapılan değişiklikler.
Etkin deyim, geçerli deyime ulaşmak için çağrılan çağrı yığınındaki bir işlevdeki herhangi bir deyimdir.
Geçerli deyim, kaynak pencerede sarı arka planda görünür. Diğer etkin deyimler gölgeli arka planda görünür ve salt okunur olur. Bu varsayılan renkler Seçenekler iletişim kutusunda değiştirilebilir.
Aşağıdaki tabloda açıklandığı gibi dil öğesine göre kodda desteklenmeyen değişiklikler.
Dil öğesi veya özelliği Desteklenmeyen düzenleme işlemi Tüm kod öğeleri Yeni -den adlandırma Ad Alanları Topla Ad alanları, türler, üyeler Sil Arabirimler Değiştir Türler Soyut veya sanal üye ekleme, geçersiz kılma ekleme (ayrıntılara bakın) Türler Yıkıcı ekleme Üyeler - Katıştırılmış birlikte çalışma türüne başvuran bir üyeyi değiştirme
- Bir statik üyeye, kod yürütülerek zaten erişildikten sonra değiştirmeÜyeler (Visual Basic) - HataDa veya Özgeçmiş deyimiyle bir üyeyi değiştirme
- Aggregate, Group By, Simple Join veya Group Join LINQ sorgu yan tümcesi içeren bir üyeyi değiştirmeYöntemler - İmzaları değiştirme
- Bir yöntem gövdesi ekleyerek soyut bir yöntemin kısıtlanmamış hale gelmesini sağlama
- Yöntem gövdesini silmeÖzellikler Ekleme veya değiştirme Olaylar veya özellikler Tür parametresini, temel türü, temsilci türünü veya dönüş türünü değiştirme İşleçler veya dizin oluşturucular Tür parametresini, temel türü, temsilci türünü veya dönüş türünü değiştirme catch blokları Etkin bir deyim içerdiğinde değiştirme try-catch-finally blokları Etkin bir deyim içerdiğinde değiştirme using deyimleri Topla zaman uyumsuz yöntemler/lambdalar .NET Framework 4 ve daha düşük bir sürümü hedefleyen bir projede zaman uyumsuz yöntemi/lambdayı değiştirme (ayrıntılara bakın) Yineleyiciler .NET Framework 4 ve önceki sürümleri hedefleyen bir projede yineleyiciyi değiştirme (ayrıntılara bakın) Dil öğesi veya özelliği Desteklenmeyen düzenleme işlemi Tüm kod öğeleri Yeni -den adlandırma Ad Alanları Topla Ad alanları, türler, üyeler Sil Genel Türler Ekleme veya değiştirme Arabirimler Değiştir Türler Soyut veya sanal üye ekleme, geçersiz kılma ekleme (ayrıntılara bakın) Türler Yıkıcı ekleme Üyeler - Katıştırılmış birlikte çalışma türüne başvuran bir üyeyi değiştirme
- Bir statik üyeye, kod yürütülerek zaten erişildikten sonra değiştirmeÜyeler (Visual Basic) - HataDa veya Özgeçmiş deyimiyle bir üyeyi değiştirme
- Aggregate, Group By, Simple Join veya Group Join LINQ sorgu yan tümcesi içeren bir üyeyi değiştirmeYöntemler - İmzaları değiştirme
- Bir yöntem gövdesi ekleyerek soyut bir yöntemin kısıtlanmamış hale gelmesini sağlama
- Yöntem gövdesini silmeÖzellikler Ekleme veya değiştirme Olaylar veya özellikler Tür parametresini, temel türü, temsilci türünü veya dönüş türünü değiştirme İşleçler veya dizin oluşturucular Tür parametresini, temel türü, temsilci türünü veya dönüş türünü değiştirme catch blokları Etkin bir deyim içerdiğinde değiştirme try-catch-finally blokları Etkin bir deyim içerdiğinde değiştirme using deyimleri Topla zaman uyumsuz yöntemler/lambdalar .NET Framework 4 ve daha düşük bir sürümü hedefleyen bir projede zaman uyumsuz yöntemi/lambdayı değiştirme (ayrıntılara bakın) Yineleyiciler .NET Framework 4 ve önceki sürümleri hedefleyen bir projede yineleyiciyi değiştirme (ayrıntılara bakın)
Güvenli olmayan kod
Güvenli olmayan kodda yapılan değişiklikler, güvenli koddaki değişikliklerle aynı sınırlamalara sahiptir ve ek bir kısıtlama vardır: Düzenle ve Devam Et, işlecini içeren stackalloc
bir yöntemden çıkan güvenli olmayan kodda yapılan değişiklikleri desteklemez.
Uygulama desteği
Desteklenen uygulamalar şunlardır:
- Windows 10 veya Windows 11'de UWP uygulamaları
- .NET Framework 4.6 masaüstü veya sonraki sürümlerini hedefleyen x86 ve x64 uygulamaları (.NET Framework yalnızca masaüstü sürümüdür)
.NET 6 ve üzeri için düzenleme aşağıdaki dosya türleri için desteklenir:
- .cshtml
- .Jilet
Desteklenmeyen uygulamalar, platformlar ve işlemler
Desteklenmeyen uygulamalar veya platformlar şunlardır:
- F#
- .NET Native
- Silverlight 5
- Windows 8.1
- Xamarin.Forms (iOS ve Android)
ASP.NET ve ASP.NET Core için düzenleme aşağıdaki dosya türleri için desteklenmez:
- .aspx
- .ascx
- .aspx
- .ascx
- .cshtml
- .Jilet
Desteklenmeyen senaryolar
Düzenle ve Devam Et aşağıdaki hata ayıklama senaryolarında kullanılamaz:
Karma mod (yerel/yönetilen) hata ayıklama.
.NET 7 veya üzerini hedeflemeden Arm64'te hata ayıklama.
COR_ENABLE_PROFILING ortam değişken kümesiyle hata ayıklama.
Hata Ayıkla menüsünden Başlat'ı seçerek uygulamayı çalıştırmak yerine işleme ekleme (İşleme Ekleme Hatalarını Ayıkla>) kullanarak uygulamada hata ayıklama. Bir işleme eklerken Düzenle ve Devam Et'i kullanmak istiyorsanız, COMPLUS_ForceENC ortam değişkeninin işlemi başlatmadan önce ayarlanması gerekir (
set COMPLUS_ForceENC=1
).Belirsiz (örneğin, zamana dayalı) derleme sürümleriyle hata ayıklama. Düzenle ve Devam Et'i kullanmak istiyorsanız sürümü yalnızca Yayın (veya CI) derlemelerinde ayarlamayı ve derleme hatalarını ayıklama sabitinde tutmayı göz önünde bulundurun.
İyileştirilmiş kodda hata ayıklama.
SQL hata ayıklama.
Döküm dosyasında hata ayıklama.
Katıştırılmış çalışma zamanı uygulamasında hata ayıklama.
Derleme hataları nedeniyle yeni bir sürüm oluşturulamadıktan sonra kodunuzun eski bir sürümünde hata ayıklama.