Aracılığıyla paylaş


Desteklenen kod değişiklikleri (C# ve Visual Basic)

Önceki adı Düzenle ve Devam Et olan Anında 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.

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ırlama
Türler Yöntemler, alanlar, oluşturucular ve daha fazlasını ekleme Evet
Yineleyiciler Ekleme veya değiştirme Hayır
async/await ifadeleri Ekleme veya değiştirme Evet
Dinamik nesneler Ekleme veya değiştirme Hayır
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

Not alın

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 Framework için desteklenen özellikler, listelenen özelliklerin bir alt kümesidir ve derleyici sürümüne bağımlıdır.

.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 Anında Yeniden Yükleme hem de Düzenle ve Devam Et deneyimlerinde kullanılabilir.

.NET 6+ Sıcak Yeniden Yükleme deneyimi, Düzenle ve Sürdür 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 aktif 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 ifade, kaynak pencerede sarı arka planda görünür. Diğer etkin deyimler gölgeli bir arka planda görünür ve salt okunur durumdadır. Bu varsayılan renkler Seçenekleri iletişim kutusunda değiştirilebilir.

  • Aşağıdaki tabloda açıklandığı gibi dil öğesine göre kodda desteklenmeyen değişiklikler.

    .NET 6+ ve Visual Studio 2022 için, şu anda desteklenen ve desteklenmeyen düzenleme türleri için desteklenen Düzenlemeler bölümüne bakın.

    Dil öğesi veya özelliği Desteklenmeyen düzenleme işlemi
    Tüm kod öğeleri Yeniden adlandırma
    Ad Alanları Ekle
    Ad alanları, türler, üyeler Silmek
    Arayüzler Değiştirmek
    Türler Soyut veya sanal üye ekleyin, geçersiz kılma ekleyin (bkz. ayrıntılar)
    Türler Yıkıcı ekle
    Üyeler - Gömülü bir interop türüne referans veren bir üyeyi değiştirme
    - Statik bir üyeyi kod çalıştırılarak erişildikten sonra değiştirme
    Üyeler (Visual Basic) - Hata Oluştuğunda veya Devam Et 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öntemi soyut olmayan bir yöntem yapma
    - Yöntem gövdesini sil
    Öznitelik 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ı Bir etkin deyim içerdiğinde değiştir
    try-catch-finally blokları Bir etkin deyim içerdiğinde değiştir
    using ifadesi Ekle
    eşzamansız 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 (bkz. ayrıntılar)
    Yineleyiciler .NET Framework 4 ve önceki sürümleri hedefleyen bir projede yineleyiciyi değiştirme (bkz. ayrıntılar)

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, stackalloc işlecini içeren 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

Desteklenmeyen senaryolar

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

  • Karışık 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ıklama > İşleme Ekle'yi kullanarak uygulamada hata ayıklama yapmak, Hata Ayıklama menüsünden Başlat'ı seçerek uygulamayı çalıştırmak yerine yapılabilir. Bir işleme eklerken Düzenle ve Devam Et'i kullanmak istiyorsanız, işlemi başlatmadan önce COMPLUS_ForceENC ortam değişkeninin ayarlanması gerekir (set COMPLUS_ForceENC=1).

  • Belirsiz (örneğin, zamana dayalı) derleme sürümleriyle hata ayıklama. Düzenle ve Devam Et özelliğini kullanmak istiyorsanız, sürümü yalnızca Yayın (veya CI) derlemelerinde ayarlamayı ve Debug derlemelerindeki sürümü sabit tutmayı düşünün.

  • İ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.