Aracılığıyla paylaş


Visual Studio'da Hot Reload kullanarak çalışan kod yazma ve hata ayıklama (C#, Visual Basic, C++)

Visual Studio 2022'den başlayarak, Visual Studio'daki Sık Erişimli Yeniden Yükleme deneyimi hem yönetilen .NET hem de yerel C++ uygulamaları için çalışır. Üzerinde çalıştığınız uygulamanın türü ne olursa olsun, Hızlı Yeniden Yükleme'nin amacı, düzenlemeler arasında mümkün olduğunca az sayıda uygulama yeniden başlatması gereksinimini ortadan kaldırarak, uygulamaların yeniden derlenmesi, yeniden başlatılması ve daha önce bulunduğunuz konuma yeniden gitmeniz için harcadığınız süreyi kısaltıp, bu sayede daha üretken olmanıza yardımcı olmaktır.

Kod dosyalarınızı düzenlemenizi ve değişiklikleri çalışan uygulamaya anında uygulamanızı mümkün kılarak, üretkenliği artırıyoruz. Bu yönteme Sıcak Yüklemede denir. Değişiklikleriniz uygulandıktan sonra, uygulamanın kendisinde bir eylem gerçekleştirerek (veya bir süreölçer aracılığıyla vb.) kodunuzu yeniden yürüterek ve değişiklikleri hemen görün; kesme noktaları aracılığıyla uygulamanın duraklatılması gerekmez!

Çalışan kodu Hot Reload ile güncelleştir

  1. Desteklenen bir uygulama türünü temel alan bir proje açın. Bkz. .NET ve C++ desteklenen uygulamalar.

  2. F5 veya destekleniyorsa Ctrl+F5kullanarak uygulamayı ekli hata ayıklayıcıyla başlatın.

  3. Bir kod dosyası açın ve kodu değiştirin.

  4. Kod değişikliklerini uygulamak için Hot Reload düğmesini kullanın veya ALT+F10 tuşlarına basın.Hot Reload simgesi ekran görüntüsü.

    Hot Reload'un ekran görüntüsü.

Kullanıcı arabirimindeki değişiklikleri görmek için kodun yeniden yürütülmesi gerekir. Örneğin, bir düğmenin arka planındaki kod yeniden yürütülmelidir veya bir süreölçer aracılığıyla belirli bir aralıkta tetiklenen kod. Başka bir örnek olarak, ASP.NET Core, MetadataUpdateHandler işlevselliği nedeniyle otomatik tarayıcı yenilemeyi destekler.

.NET uygulamaları için destek

  • Visual Studio 2022 kullanırken ve uygulamanızı hata ayıklayıcıile başlatırken, temel Canlı Yeniden Yükleme deneyimi çoğu .NET uygulaması ve çerçeve sürümüyle uyumludur. Bu destek .NET Framework, .NET Core ve .NET 5+ (C# ve Visual Basic için uygun olduğunda) içerir. Bu senaryodaki beklenti, hata ayıklayıcısını kullanıyorsanız Hot Reload özelliğinin sizin için mevcut olduğunu varsayın ve bir deneyin!
  • Visual Studio 2022 kullanıyor, ancak hata ayıklayıcısını (örneğin, uygulamayı başlatmak için CTRL-F5 kullanarak) kullanmıyorsanız, çoğu .NET 6 uygulaması türünü hedeflerken Anında Yeniden Yükleme kullanılabilir. Bu senaryoda, .NET 6+ hedeflemeyen uygulamalar (yani, .NET 5 veya altını hedefleyenler) "hata ayıklayıcısız" senaryoyu desteklemez ve Hot Reload desteği almak için hata ayıklayıcıyı kullanmalıdır.
  • Visual Studio 2022'yi bir .NET 6+ uygulamasıyla kullanırken, çoğu senaryodesteklenir. Bu destek, daha önce bahsedilen yeni "hata ayıklayıcı yok" özelliğiyle sınırlı değildir. Ayrıca Blazor projeleri için anında yeniden yükleme desteği ve daha genel olarak herhangi bir ASP.NET Core uygulamasında Razor dosyalarını düzenleme ve CSS Anında Yeniden Yükleme gibi diğer yeni özellikleri de içerir. Visual Studio 2022'yi ve .NET 6'yı hedefleyen uygulamaları birlikte kullanmak, size en güçlü Anında Yeniden Yükleme deneyimini sağlar.

Aşağıdaki tabloda, proje türüne göre hata ayıklayıcı ekli (F5) ve hata ayıklayıcısı (Ctrl+F5) olmadan .NET Çalışırken Yeniden Yüklemeyi desteklemek için gereken en düşük .NET sürümü gösterilmektedir. Visual Studio 2022 sürüm 17.8 veya üzeri gereklidir.

Uygulama türü F5 Ctrl+F5 MetadataUpdateHandler desteği
Konsol .NET 6 .NET 6
Linux/macOS üzerinde çalıştırma
(Docker ve WSL)
.NET 8 .NET 6 .NET 8
Arm64'te çalışıyor .NET 7 .NET 7 .NET 7
WPF .NET 6 .NET 6
WinForms .NET 6 .NET 6
ASP.NET .NET 6 .NET 6
Blazor Sunucusu .NET 6 .NET 6 .NET 6
Blazor WebAssembly .NET 6 .NET 6 .NET 6
MAUİ
(WinUI/Android/iOS)
.NET 6 -- --

Sık Erişimli Yeniden Yükleme ile yapabileceğiniz düzenleme türleri, uygulamayı başlatmak için kullandığınız yöntemle (F5 veya Ctrl+F5) değil çalışma zamanı ve derleyici sürümü tarafından belirlenir.

Aşağıdaki bölümlerde ek ayrıntılar sağlıyoruz.

.NET Framework uygulamaları desteği

Visual Studio 2022 kullanırken ve uygulamanızı hata ayıklayıcıyla başlatırken, temel Sıcak Yeniden Yükleme özelliği çoğu .NET uygulaması ve çerçeve sürümüyle çalışır. Bu destek .NET Framework, .NET Core ve .NET 5+ (C# ve Visual Basic için uygun olduğunda) içerir. Bu senaryodaki beklenti, hata ayıklayıcısını kullanıyorsanız Hot Reload özelliğinin sizin için mevcut olduğunu varsayın ve bir deneyin!

C++ uygulamaları için destek

Visual Studio 2022'yi kullanırken ve uygulamanızı hata ayıklayıcıyla (F5) başlattığınızda, Anında Yeniden Yükleme düğmesini kullanarak yerel bir C++ uygulamasını hata ayıklayıcı altında çalışırken yeniden yükleyebilirsiniz. Hot Reload, CMake ve OpenFolder projeleri kullanılarak oluşturulan uygulamalar için de desteklenir.

Projenizin Sık Erişimli Yeniden Yüklemeyi desteklemesi için aşağıdaki seçenekleri ayarlamanız gerekir:

  • Proje > Özellikleri > C/C++ > Genel >Hata Ayıklama Bilgileri Biçimi "Düzenleme ve Devam /ZIiçin Program Veritabanı" olarak ayarlanmalıdır
  • Project > Özellikleri > Bağlayıcı > Genel >Artımlı Bağlamayı Etkinleştir "Evet /INCREMENTAL" olarak ayarlanmalıdır

Desteklenen düzenlemeler için bkz. C++ Desteklenen Kod Değişiklikleri.

Hata ayıklayıcı kullanılırken .NET veya .NET Framework uygulamasıyla Visual Studio 2022

Visual Studio 2022'yi kullanırken ve uygulamayı hata ayıklayıcıyı kullanarak başlatırken Anında Yeniden Yükleme çoğu uygulama çerçevesiyle çalışır.

.NET'e sahip olduğunuz ve Visual Studio yönetilen hata ayıklayıcısını kullandığınız her yerde temel Sıcak Yeniden Yükleme desteği alabilirsiniz. Bu durum, Azure İşlevleri gibi projelerin bile bu senaryoda harika çalıştığı anlamına gelir.

Not

Varsayılan olarak, bazı projeler Hot Reload'u desteklemeyen karma mod hata ayıklamayı kullanır. Bu ayarı proje ayarlarında, şu şekilde değiştirebilirsiniz: Proje > Özellikleri > Hata Ayıklama > Hata ayıklama başlatma profilleri kullanıcı arayüzünü açma > Yerel kod hata ayıklamasını etkinleştirme seçeneğini false olarak ayarlayın.

Visual Studio 2022'yi bir .NET uygulamasıyla kullanmak, ancak hata ayıklayıcısını kullanmamak

Anında Yeniden Yükleme, çoğu .NET 6+ uygulaması türü hedeflendiğinde hata ayıklayıcıya gerek kalmadan kullanılabilir.

Bu özellik .NET 6+ için özeldir. .NET 6+'yı hedeflemeyen (yani .NET 5 veya üzerini hedefleyen) bu uygulamalar "hata ayıklayıcı yok" senaryoyu desteklemez ve Sık Erişimli Yeniden Yükleme işlevine erişmek için hata ayıklayıcıyı kullanmalıdır.

Ayrıca, şu anda tüm proje türleri "hata ayıklayıcı yok" senaryoyu desteklemez, bkz. .NET uygulamaları için destek.

.NET 6+ uygulamasıyla Visual Studio 2022

Hem Visual Studio 2022 kullanıyor hem de .NET 6+ sürümünü hedefleyen uygulamalar üzerinde çalışıyorsanız, en şık ve yetenekli Çalışırken Yeniden Yükleme deneyiminin avantajlarından yararlanırsınız.

Bu senaryoda desteklenen durumlar şunlardır:

  • Blazor uygulamaları (Sunucu ve WebAssembly)
  • Hem Blazor hem de normal ASP.NET Core web sitelerinde Razor dosyalarını düzenleme
  • CSS Anında Yeniden Yükleme
  • XAML Anında Yeniden Yükleme
  • Hata ayıklayıcı olmadan uygulamaları çalıştırırken Hot Reload desteği (daha önce daha ayrıntılı olarak açıklandığı gibi)

.NET 6+ sürümünü hedeflerseniz, yaklaşan Visual Studio 2022 güncelleştirmelerinde ve .NET özellik bantlarında ve önemli sürümlerde iyileştirmeler almaya devam edersiniz.

Desteklenen ASP.NET Temel Senaryoları

Temel Anında Yeniden Yükleme deneyimi birçok ASP.NET senaryosunda desteklenmektedir. En yaygın olarak kullanılabilen özellik, çoğu web uygulaması türü için arka planda kod ve diğer .NET sınıf dosyalarını değiştirme özelliğidir. Bu özellik Visual Studio hata ayıklayıcısını kullanırken çalışır ve daha önce Etkin Yeniden Yükleme özelliğinin kullanılabilildiği her yerde bulunur. Daha ayrıntılı yönergeler için bkz. ASP.NET Core için .NET Hot Reload desteği.

.NET 6+ sürümünü hedefleyen ASP.NET Core geliştiricileri için, .NET'in alt sürümleri için ek özellikler sağlanmaz. Bu özellikler şunlardır:

  • cshtml : Razor CSHTML dosyasını düzenlemek birçok düzenleme türünü destekler.
  • Tarayıcı Yenilemesi: Razor dosyasını düzenlemek, hata ayıklama sırasında web tarayıcınızdaki değişiklikleri otomatik olarak günceller. Bu özellik daha önce yalnızca uygulamayı hata ayıklayıcı olmadan başlatırken kullanılabilirdi.
  • CSS Çalışırken Yeniden Yükleme: Uygulama çalışırken CSS dosyalarını değiştirebilirsiniz ve siz yazarken değişiklikler çalışan uygulamaya hemen uygulanır.
  • Hata Ayıklayıcı Yok: Web uygulamanızı hata ayıklayıcı olmadan başlatmak için Visual Studio kullanırken Sık Erişimli Yeniden Yükleme desteği alırsınız (CTRL-F5).

Desteklenen .NET değişiklikleri

.NET Hot Reload deneyimi, hata ayıklayıcısı ve C# derleyicisi (Roslyn) tarafından desteklenmektedir. Roslyn tarafından desteklenen düzenleme ve Desteklenen kod değişiklikleri (C# ve VB) şu anda desteklenen düzenleme türlerini ve gelecekteki olası iyileştirmeleri listelemektedir.

Desteklenen .NET Framework değişiklikleri

.NET Anında Yeniden Yükleme deneyimi hata ayıklayıcı ve C# derleyicisi tarafından desteklenir. Desteklenen kod değişiklikleri (C# ve VB) şu anda desteklenen düzenleme türlerini ve gelecekteki olası geliştirmeleri listeler.

Desteklenmeyen .NET ve .NET Framework projeleri

Anında Yeniden Yükleme bazı proje yapılandırmalarında kullanılamaz.

  • Visual Studio'yu hata ayıklayıcı olmadan kullanıyorsanız, Sık Erişimli Yeniden Yükleme yalnızca .NET 6+ sürümünü hedefleyen .NET uygulamaları için çalışır.
  • Uygulamanızı çalıştırmak için Visual Studio hata ayıklayıcısını kullanıyorsanız ancak ayarlardaki Enable Hot Reload and Edit and Continue when debugging devre dışı bıraktıysanız, Hot Reload desteklenmez.
  • Sürüm veya özel derleme yapılandırmaları desteklenmez. Projeniz Debug derleme yapılandırmasını kullanmalıdır.
  • F# veya .NET Native projesini hedef alıyorsanız.
  • Bazı başlatma veya derleme iyileştirmeleri .NET Çalışırken Yeniden Yükleme özelliğinde desteklenmez. Örneğin, projenizin hata ayıklama profili aşağıdaki yollarla yapılandırılmışsa, .NET Çalışırken Yeniden Yükleme desteklenmez:
    • Kırpma projeniz için etkinleştirildi. Örneğin, hata ayıklama profili için proje dosyanızda PublishTrimmed True olarak ayarlanırsa desteklenmez.
    • ReadyToRun projeniz için etkinleştirildi. Örneğin, hata ayıklama profili için proje dosyanızda PublishReadyToRun True olarak ayarlanırsa desteklenmez.

Daha fazla bilgi için bkz. Desteklenmeyen senaryolar.

F# için "Hot Reload" Desteklenmiyor.

F# kodunu hata ayıklarken "Hot Reload" veya "Düzenle ve Devam Et" özellikleri desteklenmez. Hata ayıklama oturumu sırasında F# kodunda düzenleme yapılabilir, ancak bundan kaçınılmalıdır. Kod değişiklikleri hata ayıklama oturumu sırasında uygulanmaz. Bu nedenle, hata ayıklarken F# kodunda yapılan tüm düzenlemeler, hata ayıklanan kodla eşleşmeyen kaynak koda neden olur.

Anında Yeniden Yükleme İşlemlerini Yapılandır

Anında Yeniden Yüklemeyi etkinleştirmek, devre dışı bırakmak veya yapılandırmak için bkz. Düzenlemeyi ve Devam Etmeyi Yapılandırma.

Uyarı iletisi

Aşağıdaki iletişim kutusunu görürseniz, Hot Reload geçerli düzenlemeleri ancak yeniden başlatarak uygulayabilir. Uygulamayı yeniden derlemeyi ve değişiklikleri uygulamayı (yeniden başlatma) veya düzenlemeye devam etmeyi seçebilirsiniz. Yeniden oluşturursanız tüm uygulama durumu kaybolur. Düzenlemeye devam ederseniz, ek değişiklikler veya düzeltmeler Sık Erişimli Yeniden Yükleme'nin yeniden çalışmasını sağlayabilir.

Değişiklikleri uygula iletişim kutusunun ekran görüntüsü

İletişim kutusunda değişiklikler uygulanamayınca her zaman yeniden oluştur seçeneğini belirlerseniz, geçerli Visual Studio oturumunda iletişim kutusunu bir daha görmezsiniz ve Visual Studio iletişim kutusunu göstermek yerine otomatik olarak yeniden derlenir ve yeniden yüklenir.

Sorun giderme

Hot Reload oturumuyla ilgili ayrıntılı tanılama bilgileri için Hot Reload Çıktısı penceresinin kontrol edilmesi şiddetle tavsiye edilir.

.NET Core'da yanıt sıkıştırma kullanıyorsanız, yanıt sıkıştırmahakkındaki bilgilere bakın.