Pisanie i debugowanie uruchomionego kodu za pomocą funkcji Przeładowywania na gorąco w programie Visual Studio (C#, Visual Basic, C++)
Począwszy od programu Visual Studio 2022, środowisko ponownego ładowania na gorąco w programie Visual Studio działa zarówno dla zarządzanych aplikacji .NET, jak i natywnych dla języka C++. Niezależnie od typu aplikacji, nad którą pracujesz, funkcja Hot Reload ma na celu zminimalizowanie liczby ponownych uruchomień aplikacji między edycjami, co pozwala zwiększyć produktywność, skracając czas oczekiwania na ponowne skompilowanie, uruchomienie aplikacji oraz powrót do poprzedniej lokalizacji, w której się znajdowałeś.
Zwiększamy produktywność dzięki możliwości edytowania plików kodu aplikacji i natychmiastowego stosowania zmian kodu do uruchomionej aplikacji, znanej również jako Hot Reload. Po zastosowaniu zmian ponownie wykonaj kod, wykonując akcję w samej aplikacji (lub przez jakiś czasomierz itp.) i natychmiast wyświetlając zmiany; nie jest wymagane wstrzymanie aplikacji za pośrednictwem punktów przerwania!
Aktualizowanie uruchomionego kodu za pomocą Hot Reload
Otwórz projekt na podstawie obsługiwanego typu aplikacji. Zobacz obsługiwane aplikacje .NET i C++.
Uruchom aplikację przy użyciu debugera dołączonego przy użyciu F5 lub , jeśli jest obsługiwana, Ctrl+F5.
Otwórz plik kodu i zmień kod.
Zastosuj zmiany kodu, używając przycisku Hot Reload lub naciśnij ALT+F10.
Aby zobaczyć zmiany w interfejsie użytkownika, należy ponownie wykonać kod. Na przykład kod odpowiadający za przycisk musi zostać ponownie uruchomiony lub kod, który jest wyzwalany w regularnych odstępach czasu za pomocą timera. Na innym przykładzie ASP.NET Core obsługuje automatyczne odświeżanie przeglądarki dzięki funkcjonalności MetadataUpdateHandler.
Obsługa aplikacji .NET
- W przypadku korzystania z programu Visual Studio 2022 i uruchamiania aplikacji przy użyciu debugerapodstawowa funkcja Hot Reload działa z większością typów aplikacji platformy .NET i wersji platformy. Ta obsługa obejmuje platformy .NET Framework, .NET Core i .NET 5+ (zarówno dla języków C#, jak i Visual Basic zgodnie z obowiązującymi zasadami). Oczekiwanie w tym scenariuszu polega na tym, że jeśli używasz debugera, załóżmy, że przeładowywanie na gorąco jest dostępne dla Ciebie i spróbuj!
- W przypadku korzystania z programu Visual Studio 2022, ale nie korzystając z debugera (na przykład przy użyciu CTRL-F5 do uruchamiania aplikacji), ładowanie na gorąco jest dostępne podczas używania większości typów aplikacji platformy .NET 6. W tym scenariuszu aplikacje nie są przeznaczone dla platformy .NET 6+ (czyli przeznaczone dla platformy .NET 5 lub nowszej) nie obsługują scenariusza "brak debugera" i muszą używać debugera do uzyskania obsługi przeładowywania na gorąco.
- W przypadku korzystania z programu Visual Studio 2022 z aplikacją .NET 6+ większość scenariuszy jest obsługiwana. Ta obsługa nie jest ograniczona do nowej funkcji "brak debugera" wymienionej powyżej. Obejmuje również inne nowe funkcje, takie jak obsługa ponownego ładowania projektów Blazor na gorąco i, ogólnie rzecz biorąc, edytowanie plików Razor w dowolnych aplikacjach ASP.NET Core i przeładowywanie kodu CSS na gorąco. Korzystanie z programu Visual Studio 2022 i aplikacji przeznaczonych dla platformy .NET 6 razem zapewnia najpotężniejsze doświadczenie z ponownym ładowaniem na gorąco.
W poniższej tabeli pokazano, które projekty obsługują przeładowywanie na gorąco platformy .NET z dołączonym debugerem (F5) i bez dołączonego debugera (Ctrl+F5), zgodnie z minimalną wersją platformy .NET wymaganą do obsługi w programie Visual Studio 2022 (17.8).
Typ aplikacji | F5 | Ctrl+F5 | Obsługa MetadataUpdateHandler |
---|---|---|---|
Konsola | ✅ | .NET 6 | .NET 6 |
Uruchamianie w systemie Linux/macOS (Docker i WSL) |
.NET 8 | .NET 6 | .NET 8 |
Uruchamianie na Arm64 | .NET 7 | .NET 7 | .NET 7 |
WPF | ✅ | .NET 6 | .NET 6 |
WinForms | ✅ | .NET 6 | .NET 6 |
ASP.NET | ✅ | .NET 6 | .NET 6 |
Serwer Blazor | .NET 6 | .NET 6 | .NET 6 |
Blazor WebAssembly | .NET 6 | .NET 6 | .NET 6 |
MAUI (WinUI/Android/iOS) |
.NET 6 | -- | -- |
Typy edycji, które można wprowadzić za pomocą Hot Reload, są określane przez środowisko uruchomieniowe i wersję kompilatora, a nie przez sposób, w jaki uruchomiono aplikację (F5 lub Ctrl+F5).
W poniższych sekcjach podano dodatkowe szczegóły.
Obsługa aplikacji C++
W przypadku korzystania z programu Visual Studio 2022 i uruchamiania aplikacji za pomocą debugera, możesz przeładować natywną aplikację C++ podczas działania w debugerze (F5) przy użyciu przycisku Gorąca Przeładka. Przeładowywanie na gorąco jest również obsługiwane w przypadku aplikacji utworzonych przy użyciu projektów CMake i OpenFolder.
Aby projekt obsługiwał przeładowywanie na gorąco, potrzebne są następujące opcje:
- Właściwości programu Project >> C/C++ > Ogólne >Format informacji debugowania musi być ustawiony na "Program Database for Edit and Continue
/ZI
" - Właściwości > programu Project > Konsolidator > Ogólne >Włączanie łączenia przyrostowego musi być ustawione na "Tak
/INCREMENTAL
".
Aby zapoznać się z obsługiwanymi zmianami w kodzie, sprawdź Obsługiwane Zmiany Kodu C++.
Program Visual Studio 2022 z aplikacją .NET podczas korzystania z debugera
W przypadku korzystania z programu Visual Studio 2022 i uruchamiania aplikacji z debugerem funkcja Hot Reload współdziała z większością struktur aplikacji.
Wszędzie tam, gdzie jest platforma .NET i używasz zarządzanego debugera Visual Studio, powinieneś uzyskać podstawową obsługę Hot Reload. Oznacza to, że nawet projekty, takie jak Azure Functions, działają świetnie w tym scenariuszu.
Notatka
Domyślnie niektóre projekty używają debugowania w trybie mieszanym, które nie obsługuje Hot Reload. To ustawienie można zmodyfikować w ustawieniach projektu, ustawiając Właściwości projektu >> Debugowanie > Otwórz interfejs profilów uruchamiania debugowania > Włącz debugowanie kodu natywnego na false.
Visual Studio 2022 z aplikacją .NET, ale bez użycia debugera
Przeładowywanie na gorąco jest dostępne bez debugera w przypadku tworzenia większości typów aplikacji .NET 6+.
Ta funkcja jest dostępna wyłącznie dla platformy .NET 6+. Te aplikacje, które nie są przeznaczone dla platformy .NET 6+ (czyli są przeznaczone dla platformy .NET 5 lub nowszej), nie obsługują scenariusza "brak debugera" i muszą używać debugera, aby uzyskać dostęp do funkcji przeładowywania na gorąco.
Ponadto nie wszystkie typy projektów obsługują obecnie scenariusz "brak debugera", zobacz
Program Visual Studio 2022 z aplikacją .NET 6+
Jeśli używasz programu Visual Studio 2022 i pracujesz nad aplikacjami celującymi w platformę .NET 6+, uzyskasz korzyści z najbardziej dopracowanej i zaawansowanej funkcji przeładowania na gorąco.
Obsługiwane w tym scenariuszu:
- Aplikacje platformy Blazor (serwer i zestaw WebAssembly)
- Edytowanie plików Razor zarówno na platformie Blazor, jak i w zwykłych witrynach internetowych platformy ASP.NET Core
- Gorące ładowanie CSS
- Przeładowywanie XAML na gorąco
- Obsługa Hot Reload przy uruchamianiu aplikacji bez debuggera (jak opisano wcześniej bardziej szczegółowo)
Jeśli docelowy jest program .NET 6+, będziesz nadal uzyskiwać ulepszenia w nadchodzących aktualizacjach programu Visual Studio 2022 i wersjach głównych platformy .NET.
Obsługiwane scenariusze ASP.NET Core
Podstawowe doświadczenie korzystania z funkcji Hot Reload jest obsługiwane w wielu scenariuszach ASP.NET. Najbardziej powszechną funkcją jest możliwość zmiany plików typu code-behind oraz innych plików klas .NET dla większości rodzajów aplikacji internetowych. Ta funkcja działa podczas korzystania z debugera programu Visual Studio i jest dostępna wszędzie tam, gdzie wcześniej dostępna była funkcja Hot Reload. Aby uzyskać bardziej szczegółowe wskazówki, zobacz Obsługa przeładowywania na gorąco platformy .NET dla ASP.NET Core.
W przypadku deweloperów ASP.NET Core, którzy celują w .NET 6 lub nowsze, istnieją dodatkowe możliwości niedostępne w niższych wersjach .NET. Te możliwości obejmują:
- CSHTML: Plik Razor CSHTML obsługuje wiele rodzajów edycji.
- Odświeżanie przeglądarki: Edytowanie pliku Razor automatycznie odświeża zmiany w przeglądarce internetowej podczas debugowania. Ta funkcja była wcześniej dostępna tylko podczas uruchamiania aplikacji bez debugera.
- CSS Hot Reload: Możesz zmieniać pliki CSS w trakcie działania aplikacji, a zmiany są natychmiast stosowane do bieżącej aplikacji w miarę wpisywania.
- Bez debugera: Uzyskujesz wsparcie Hot Reload, gdy używasz programu Visual Studio do rozpoczynania aplikacji internetowej bez debugera (CTRL-F5).
Obsługiwane zmiany platformy .NET
Środowisko ponownego ładowania na gorąco platformy .NET jest obsługiwane przez debuger i kompilator języka C# (Roslyn). Roslyn wspiera edycje i Obsługiwane zmiany w kodzie (C# i VB) wyświetlają listę typów edycji obecnie obsługiwanych i potencjalnych przyszłych ulepszeń.
Nieobsługiwane projekty platformy .NET
Szybkie przeładowanie nie jest dostępne w niektórych konfiguracjach projektu.
- Jeśli używasz programu Visual Studio bez debugera, Hot Reload działa tylko w przypadku aplikacji .NET przeznaczonych na .NET 6+.
- Jeśli używasz debugera programu Visual Studio do uruchamiania aplikacji, ale wyłączono
Enable Hot Reload and Edit and Continue when debugging
w ustawieniach, przeładowywanie na gorąco nie jest obsługiwane. - Konfiguracje "Release" lub niestandardowe nie są obsługiwane. Projekt musi używać konfiguracji kompilacji
Debug
. - Jeśli celem jest projekt F# lub .NET Native.
- Niektóre optymalizacje uruchamiania lub kompilacji nie są obsługiwane w funkcji przeładowywania na gorąco platformy .NET. Jeśli na przykład profil debugowania projektu jest skonfigurowany w następujący sposób, funkcja Hot Reload platformy .NET nie jest obsługiwana:
-
Przycinanie jest włączone dla Twojego projektu. Na przykład nie jest obsługiwane, jeśli
PublishTrimmed
jest ustawiona na wartość True w pliku projektu dla profilu debugowania. -
ReadyToRun jest włączona dla projektu. Na przykład nie jest obsługiwane, jeśli
PublishReadyToRun
jest ustawiona na wartość True w pliku projektu dla profilu debugowania.
-
Przycinanie jest włączone dla Twojego projektu. Na przykład nie jest obsługiwane, jeśli
Aby uzyskać więcej informacji, zobacz Nieobsługiwane scenariusze.
Konfigurowanie przeładowywania na gorąco
Aby włączyć, wyłączyć lub skonfigurować ponowne ładowanie na gorąco, zobacz Konfigurowanie edycji i kontynuowania.
Komunikat ostrzegawczy
Jeśli zostanie wyświetlone następujące okno dialogowe, przeładowywanie na gorąco nie może zastosować bieżących edycji bez ponownego uruchamiania. Możesz ponownie skompilować aplikację i zastosować zmiany (ponownie uruchomić) lub kontynuować edycję. W przypadku ponownej kompilacji cały stan aplikacji zostanie utracony. Jeśli będziesz kontynuować edytowanie, możliwe jest, że dodatkowe zmiany lub poprawki mogą spowodować ponowne działanie funkcji Hot Reload.
Jeśli wybierzesz opcję Zawsze ponownie kompiluj, gdy zmiany nie mogą zostać zastosowane w oknie dialogowym, w bieżącej sesji programu Visual Studio nie zobaczysz już tego okna dialogowego, a program Visual Studio automatycznie ponownie skompiluje i załaduje projekt zamiast wyświetlać okno dialogowe.
Rozwiązywanie problemów
Zdecydowanie zaleca się sprawdzenie okna wyjściowego Szybkiego Przeładowania w celu uzyskania szczegółowych informacji diagnostycznych dotyczących sesji Szybkiego Przeładowania.
Jeśli używasz kompresji odpowiedzi na platformie .NET Core, zobacz informacje na temat kompresji odpowiedzi .