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ştirme
    Yö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ştirme
    Yö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.