Code schrijven en fouten opsporen bij het uitvoeren van code met Hot Reload in Visual Studio (C#, Visual Basic, C++)
Vanaf Visual Studio 2022 werkt de Hot Reload-ervaring in Visual Studio voor zowel beheerde .NET- als systeemeigen C++-apps. Ongeacht het type app waaraan u werkt, is het de bedoeling van Hot Reload om u zoveel mogelijk app-herstarts tussen bewerkingen op te slaan, waardoor u productiever wordt door de tijd te verkorten die u besteedt aan het opnieuw bouwen, opnieuw opstarten, opnieuw opstarten naar de vorige locatie waar u zich in de app zelf bevindt, et al.
We verbeteren de productiviteit doordat u de codebestanden van uw toepassing kunt bewerken en de codewijzigingen onmiddellijk kunt toepassen op de actieve toepassing, ook wel bekend als Hot Reload-. Zodra uw wijzigingen zijn toegepast, voert u de code opnieuw uit door een actie uit te voeren in de app zelf (of via een bepaalde timer, enzovoort) en de wijzigingen onmiddellijk te bekijken; er is geen onderbreking van de app via onderbrekingspunten vereist.
Actieve code bijwerken met Hot Reload
Open een project op basis van een ondersteund toepassingstype. Zie .NET- en C++ ondersteunde toepassingen.
Start de app met het gekoppelde foutopsporingsprogramma met behulp van F5- of indien ondersteund, Ctrl+F5-.
Open een codebestand en wijzig de code.
Pas de codewijzigingen toe met de knop Hot Reload of druk op Alt+F10-.
Als u de wijzigingen in de gebruikersinterface wilt zien, moet de code opnieuw worden uitgevoerd. Code-behind voor een knop moet bijvoorbeeld opnieuw worden uitgevoerd, of code die met een vast interval wordt geactiveerd via een timer. In een ander voorbeeld ondersteunt ASP.NET Core het automatisch vernieuwen van browsers vanwege de MetadataUpdateHandler-functionaliteit.
Ondersteuning voor .NET-toepassingen
- Wanneer u Visual Studio 2022 gebruikt en uw app start met het foutopsporingsprogramma, werkt de eenvoudige hot-reload-ervaring met de meeste typen .NET-apps en frameworkversies. Deze ondersteuning omvat .NET Framework, .NET Core en .NET 5+ (voor zowel C# als Visual Basic, indien van toepassing). De verwachting in dit scenario is dat als u het foutopsporingsprogramma gebruikt, ervan uitgaat dat Hot Reload voor u beschikbaar is en het eens proberen!
- Wanneer u Visual Studio 2022 gebruikt, maar niet de debugger gebruikt (bijvoorbeeld door gebruik te maken van CTRL-F5 om de app te starten), is Hot Reload beschikbaar bij het targeten van de meeste typen .NET 6-apps. In dit scenario zullen apps die niet gericht zijn op .NET 6+ (dat wil zeggen .NET 5 of lager) het scenario 'geen foutopsporingsprogramma' niet ondersteunen en moeten ze het foutopsporingsprogramma gebruiken om ondersteuning voor Hot Reload te krijgen.
- Wanneer u Visual Studio 2022 met een .NET 6+-app gebruikt, worden de meeste scenario's ondersteund. Deze ondersteuning is niet beperkt tot de nieuwe functie 'geen foutopsporingsprogramma' die hierboven wordt vermeld. Het bevat ook andere nieuwe mogelijkheden, zoals ondersteuning voor het opnieuw laden van Blazor-projecten en, meer in het algemeen, het bewerken van Razor-bestanden in alle ASP.NET Core-apps en CSS Hot Reload. Het gebruik van Visual Studio 2022 en apps die zijn gericht op .NET 6, biedt u de krachtigste Hot Reload-ervaring.
In de volgende tabel ziet u welke projecten ondersteuning bieden voor .NET Hot Reload met het gekoppelde foutopsporingsprogramma (F5) en zonder het gekoppelde foutopsporingsprogramma (Ctrl+F5), afhankelijk van de minimale .NET-versie die is vereist voor ondersteuning in Visual Studio 2022 (17.8).
Toepassingstype | F5 | Ctrl+F5 | ondersteuning voor MetadataUpdateHandler |
---|---|---|---|
Console | ✅ | .NET 6 | .NET 6 |
Uitvoeren op Linux/macOS (Docker en WSL) |
.NET 8 | .NET 6 | .NET 8 |
Wordt uitgevoerd op Arm64 | .NET 7 | .NET 7 | .NET 7 |
WPF (Windows Presentation Foundation) | ✅ | .NET 6 | .NET 6 |
WinForms | ✅ | .NET 6 | .NET 6 |
ASP.NET | ✅ | .NET 6 | .NET 6 |
Blazor Server | .NET 6 | .NET 6 | .NET 6 |
Blazor WebAssembly | .NET 6 | .NET 6 | .NET 6 |
MAUI (WinUI/Android/iOS) |
.NET 6 | -- | -- |
De typen bewerkingen die u kunt maken met Hot Reload worden bepaald door de runtime- en compilerversie, niet door de methode die u hebt gebruikt om de toepassing te starten (F5 of Ctrl+F5).
In de volgende secties vindt u aanvullende informatie.
Ondersteuning voor C++-toepassingen
Wanneer u Visual Studio 2022 gebruikt en uw app start met het foutopsporingsprogramma, kunt u een systeemeigen C++-toepassing opnieuw laden wanneer deze wordt uitgevoerd onder het foutopsporingsprogramma (F5) met behulp van de knop Hot Reload. Hot Reload wordt ook ondersteund voor apps die zijn gebouwd met CMake- en OpenFolder-projecten.
Voor uw project ter ondersteuning van Hot Reload hebt u de volgende optieset nodig:
- Project > Properties > C/C++ > General >Debug Information Format moet zijn ingesteld op 'Program Database for Edit and Continue
/ZI
' - Project > Eigenschappen > Koppelprogramma > Algemeen >Incrementeel koppelen inschakelen moet zijn ingesteld op "Ja
/INCREMENTAL
"
Zie voor ondersteunde bewerkingen C++ Ondersteunde codewijzigingen.
Visual Studio 2022 met een .NET-app wanneer u het foutopsporingsprogramma gebruikt
Wanneer u Visual Studio 2022 gebruikt en de app start met het foutopsporingsprogramma, werkt Hot Reload met de meeste app-frameworks.
Overal waar u .NET hebt en u het door Visual Studio beheerde foutopsporingsprogramma gebruikt, moet u eenvoudige ondersteuning voor Hot Reload krijgen. Dit betekent dat zelfs projecten zoals Azure Functions in dit scenario goed werken.
Notitie
Sommige projecten maken standaard gebruik van foutopsporing in de gemengde modus, die geen ondersteuning biedt voor Hot Reload. U kunt deze instelling wijzigen in projectinstellingen door Project > Eigenschappen in te stellen > Foutopsporing > Gebruikersinterface voor het starten van foutopsporingsprofielen openen > Systeemeigen codeopsporing inschakelen op false.
Visual Studio 2022 met een .NET-app, maar niet met behulp van het foutopsporingsprogramma
Hot Reload is beschikbaar zonder het foutopsporingsprogramma voor de meeste typen .NET 6+ toepassingen.
Deze functie is exclusief voor .NET 6+. Deze apps die niet zijn gericht op .NET 6+ (dat wil gezegd. Ze richten zich op .NET 5 of lager) bieden geen ondersteuning voor het scenario 'geen foutopsporingsprogramma' en moeten het foutopsporingsprogramma gebruiken om toegang te krijgen tot de hot-reload-functionaliteit.
Niet alle projecttypen ondersteunen momenteel ook het scenario 'geen foutopsporingsprogramma', zie Ondersteuning voor .NET-toepassingen.
Visual Studio 2022 met een .NET 6+-app
Als u zowel Visual Studio 2022 als apps gebruikt die gericht zijn op .NET 6+, profiteert u van de voordelen van de meest professionele en geschikte Hot Reload-ervaring.
Ondersteund in dit scenario:
- Blazor apps (Server en WebAssembly)
- Razor-bestanden bewerken op zowel Blazor- als reguliere ASP.NET Core-websites
- CSS Hot Reload
- XAML Hot Reload
- Hot Reload-ondersteuning bij het uitvoeren van apps zonder het foutopsporingsprogramma (zoals eerder beschreven in meer details)
Als u zich richt op .NET 6+, ontvangt u doorlopende verbeteringen in de aankomende updates van Visual Studio 2022 en .NET functionele band en grote releases.
Ondersteunde ASP.NET kernscenario's
De eenvoudige Hot Reload-ervaring wordt ondersteund voor veel ASP.NET scenario's. De meest beschikbare functie is de mogelijkheid om code-behind en andere .NET-klassebestanden te wijzigen voor de meeste typen webtoepassingen. Deze functie werkt tijdens het gebruik van het Foutopsporingsprogramma van Visual Studio en is overal aanwezig waar Hot Reload eerder beschikbaar was. Zie .NET Hot Reload-ondersteuning voor ASP.NET Corevoor meer specifieke richtlijnen.
Voor ASP.NET Core-ontwikkelaars die zich richten op .NET 6+, zijn er extra mogelijkheden die niet beschikbaar zijn voor lagere versies van .NET. Deze mogelijkheden zijn onder andere:
- CSHTML: Een Razor CSHTML-bestand bewerken ondersteunt veel soorten bewerkingen.
- Browser Vernieuwen: Het bewerken van een razor-bestand vernieuwt automatisch de wijzigingen in uw webbrowser tijdens het debuggen. Deze functie was voorheen alleen beschikbaar bij het starten van de app zonder het foutopsporingsprogramma.
- CSS Hot Reload: U kunt CSS-bestanden wijzigen terwijl de app wordt uitgevoerd en wijzigingen worden direct toegepast op de actieve app terwijl u typt.
- Geen foutopsporingsprogramma: U krijgt ondersteuning voor dynamisch opnieuw laden wanneer u Visual Studio gebruikt om uw web-app te starten zonder het foutopsporingsprogramma (CTRL-F5).
Ondersteunde .NET-wijzigingen
De .NET Hot Reload-ervaring wordt mogelijk gemaakt door het foutopsporingsprogramma en de C#-compiler (Roslyn). Roslyn ondersteunde bewerkingen en ondersteunde codewijzigingen (C# en VB). Weergeef de typen bewerkingen die momenteel worden ondersteund en mogelijke toekomstige verbeteringen.
Niet-ondersteunde .NET-projecten
Hot Reload is niet beschikbaar in sommige projectconfiguraties:
- Als u Visual Studio zonder het foutopsporingsprogramma gebruikt, werkt Hot Reload alleen voor .NET-apps die gericht zijn op .NET 6+.
- Als u het Foutopsporingsprogramma van Visual Studio gebruikt om uw app uit te voeren, maar u
Enable Hot Reload and Edit and Continue when debugging
hebt uitgeschakeld in instellingen, wordt Hot Reload niet ondersteund. - Release- of aangepaste buildconfiguraties worden niet ondersteund. Uw project moet de
Debug
buildconfiguratie gebruiken. - Als u zich richt op een F#- of .NET Native-project.
- Sommige opstart- of compileeroptimalisaties worden niet ondersteund in .NET Hot Reload. Als het foutopsporingsprofiel van uw project bijvoorbeeld op de volgende manieren is geconfigureerd, wordt .NET Hot Reload niet ondersteund:
-
bijsnijden is ingeschakeld voor uw project. Het wordt bijvoorbeeld niet ondersteund als
PublishTrimmed
is ingesteld op True in het projectbestand voor het debug-profiel. -
ReadyToRun is ingeschakeld voor uw project. Bijvoorbeeld, het wordt niet ondersteund als
PublishReadyToRun
is ingesteld op True in het projectbestand voor het foutopsporingsprofiel.
-
bijsnijden is ingeschakeld voor uw project. Het wordt bijvoorbeeld niet ondersteund als
Zie Niet-ondersteunde scenario's voor meer informatie.
Hot Reload configureren
Zie Configureer Edit en Continueom Hot Reload in te schakelen, uit te schakelen of te configureren.
Waarschuwingsbericht
Als u het volgende dialoogvenster ziet, kan Hot Reload de huidige bewerkingen niet toepassen zonder opnieuw op te starten. U kunt ervoor kiezen om de app opnieuw te bouwen en wijzigingen toe te passen (opnieuw opstarten) of om door te gaan met bewerken. Als u de applicatie opnieuw bouwt, gaat alle toepassingsstatus verloren. Als u doorgaat met bewerken, is het mogelijk dat extra wijzigingen of correcties ertoe kunnen leiden dat Hot Reload opnieuw werkt.
Als u de Altijd opnieuw opbouwen selecteert wanneer wijzigingen niet kunnen worden toegepast optie in het dialoogvenster, ziet u het dialoogvenster niet opnieuw in de huidige Visual Studio-sessie en wordt Visual Studio automatisch opnieuw opgebouwd en geladen in plaats van het dialoogvenster weer te geven.
Probleemoplossing
Het wordt ten zeerste aanbevolen om het venster Hot Reload Output te controleren voor gedetailleerde diagnostische informatie over de Hot Reload-sessie.
Als u antwoordcompressie op .NET Core gebruikt, kunt u de informatie vinden over antwoordcompressie.