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, Sıcak Yeniden Yükleme'nin amacı, düzenlemeler arasında mümkün olduğunca az uygulama yeniden başlatması yaparak, uygulamaların yeniden derlenmesi, başlatılması ve uygulama içinde bulunduğunuz önceki konuma geri dönülmesi için harcadığınız süreyi azaltarak daha üretken olmanızı sağlamaktı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
Desteklenen bir uygulama türünü temel alan bir proje açın. Bkz. .NET ve C++ desteklenen uygulamalar.
F5 veya destekleniyorsa Ctrl+F5kullanarak uygulamayı ekli hata ayıklayıcıyla başlatın.
Bir kod dosyası açın ve kodu değiştirin.
Çalışırken Yeniden Yükle düğmesini kullanarak kod değişikliklerini uygulayın veya ALT+F10 basın.
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, yukarıda belirtilen 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, Visual Studio 2022'de (17.8) destek için gereken en düşük .NET sürümüne göre, hangi projelerin hata ayıklayıcı bağlıyken (F5) ve hata ayıklayıcı bağlı değilken (Ctrl+F5) .NET Çalışırken Yeniden Yükleme’yi desteklediği gösterilmektedir.
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.
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
/ZI
iç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.
Visual Studio 2022, hata ayıklayıcı kullanılırken bir .NET uygulaması ile birlikte
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 Canlı Yeniden Yüklemeyi desteklemeyen karma mod hata ayıklama 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" senaryolarını 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 Çalışırken Yeniden Yükleme 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.
Desteklenmeyen .NET 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.
- Başlatma veya derleme sırasında yapılan bazı iyileştirmeler .NET Hot Reload iç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.
-
Kırpma projeniz için etkinleştirildi. Örneğin, hata ayıklama profili için proje dosyanızda
Daha fazla bilgi için bkz. Desteklenmeyen senaryolar.
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.
İ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
Sık Erişimli Yeniden Yükleme oturumuyla ilgili ayrıntılı tanılama bilgileri için Sık Erişimli Yeniden Yükleme Çıktısı penceresini denetlemenizi öneririz.
.NET Core'da yanıt sıkıştırma kullanıyorsanız, yanıt sıkıştırmahakkındaki bilgilere bakın.