Skriv och felsök exekverande kod med Hot Reload i Visual Studio (C#, Visual Basic, C++)
Från och med Visual Studio 2022 fungerar funktionen För frekvent omläsning i Visual Studio för både hanterade .NET-appar och interna C++-appar. Oavsett vilken typ av app du arbetar med är avsikten med frekvent omläsning att spara så många appomstarter mellan redigeringar som möjligt, vilket gör dig mer produktiv genom att minska den tid du lägger på att vänta på att appar ska återskapas, startas om, navigera till den tidigare platsen där du var i själva appen, m.fl.
Vi förbättrar produktiviteten genom att göra det möjligt för dig att redigera programmets kodfiler och tillämpa kodändringarna omedelbart på det program som körs, även kallat Hot Reload. När ändringarna har tillämpats kör du koden igen genom att vidta en åtgärd i själva appen (eller genom någon form av timer osv.) och se ändringarna omedelbart. ingen pausning av appen via brytpunkter krävs!
Uppdatera körande kod med Hot Reload
Öppna ett projekt baserat på en programtyp som stöds. Se .NET och C++ program som stöds.
Starta appen med felsökningsprogrammet kopplat med antingen F5 eller om det stödsCtrl+F5.
Öppna en kodfil och ändra koden.
Använd kodändringarna med knappen Hot Reload eller tryck på ALT+F10.
Om du vill se ändringarna i användargränssnittet måste koden köras igen. Till exempel måste kod bakom för en knapp köras igen, eller kod som utlöses med ett intervall genom en timer. Som ett annat exempel stöder ASP.NET Core automatisk uppdatering av webbläsare på grund av MetadataUpdateHandler- funktioner.
Stöd för .NET-program
- När du använder Visual Studio 2022 och startar appen med felsökningsprogrammetfungerar den grundläggande funktionen för frekvent omläsning med de flesta typer av .NET-appar och ramverksversioner. Det här stödet omfattar .NET Framework, .NET Core och .NET 5+ (för både C# och Visual Basic i tillämpliga fall). Förväntningarna i det här scenariot är att om du använder felsökningsprogrammet antar du att hot reload är tillgängligt för dig och ger det ett försök!
- När du använder Visual Studio 2022 men inte använder felsökningsprogrammet (till exempel genom att använda CTRL-F5 för att starta appen) är Hot Reload tillgängligt när du riktar in dig på de flesta typer av .NET 6-appar. I det här scenariot stöder appar som inte riktar sig mot .NET 6+ (dvs. .NET 5 eller tidigare) inte scenariot "no debugger" och måste använda felsökaren för att få stöd för Hot Reload.
- När du använder Visual Studio 2022 med en .NET 6+-app stöds de flesta scenarier. Det här stödet är inte begränsat till den nya funktionen "inget felsökningsprogram" som nämns ovan. Den innehåller även andra nya funktioner, till exempel stöd för snabb omläsning av Blazor-projekt och, mer allmänt, redigering av Razor-filer i alla ASP.NET Core-appar och CSS Hot Reload. Med Visual Studio 2022 och appar som riktar in sig på .NET 6 tillsammans får du den mest kraftfulla funktionen för snabb omladdning.
I följande tabell visas vilka projekt som stöder .NET Hot Reload med det anslutna felsökningsprogrammet (F5) och utan det anslutna felsökningsprogrammet (Ctrl+F5), enligt den lägsta .NET-version som krävs för stöd i Visual Studio 2022 (17.8).
Programtyp | F5 | Ctrl+F5 |
MetadataUpdateHandler -stöd |
---|---|---|---|
Konsol | ✅ | .NET 6 | .NET 6 |
Körs på Linux/macOS (Docker och WSL) |
.NET 8 | .NET 6 | .NET 8 |
Körs på Arm64 | .NET 7 | .NET 7 | .NET 7 |
WPF | ✅ | .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 typer av ändringar du kan göra med Hot Reload bestäms av körningens- och kompilatorns version, inte av den metod som du använde för att starta programmet (F5 eller Ctrl+F5).
I följande avsnitt ger vi ytterligare information.
Stöd för C++-program
När du använder Visual Studio 2022 och startar din app med debuggern kan du ladda om ett inbyggt C++-program när du kör under debuggern (F5) med hjälp av knappen Snabbinläsning. Hot Reload stöds också för appar som skapats med hjälp av CMake och OpenFolder-projekt.
För att projektet ska ha stöd för Hot Reload måste du ställa in följande alternativ:
- Project > Properties > C/C++ > Allmänt >Felsökningsinformationsformat måste anges till "Programdatabas för redigering och fortsätt
/ZI
" - Projekt > Egenskaper > Länkare > Allmänt >Aktivera inkrementell länkning måste ställas in på "Ja
/INCREMENTAL
"
Information om ändringar som stöds finns i kodändringar som stöds av C++.
Visual Studio 2022 med en .NET-app när du använder felsökningsprogrammet
När du använder Visual Studio 2022 och startar appen med felsökningsprogrammet fungerar Hot Reload med de flesta appramverk.
Var du än har .NET och använder den hanterade felsökaren i Visual Studio bör du få grundläggande stöd för Hot Reload. Det innebär att även projekt som Azure Functions fungerar bra i det här scenariot.
Notera
Som standardinställning använder vissa projekt felsökning i blandat läge, vilket inte stöder Hot Reload. Du kan ändra den här inställningen i projektinställningar genom att ställa in Projekt > Egenskaper > Felsökning > Öppna UI för felsökningsprofiler > Aktivera felsökning av native-kod till falsk.
Visual Studio 2022 med en .NET-app, men inte med felsökningsprogrammet
Hot Reload är tillgängligt utan debugger när du riktar in mot de flesta typer av .NET 6+-appar.
Den här funktionen är exklusiv för .NET 6+. De appar som inte är inriktade på .NET 6+ (dvs. de riktar sig mot .NET 5 eller senare) stöder inte scenariot "inget felsökningsprogram" och måste använda felsökningsprogrammet för att få åtkomst till funktionerna för frekvent omläsning.
Alla projekttyper stöder för närvarande inte heller scenariot "inget felsökningsprogram" i Support för .NET-program.
Visual Studio 2022 med en .NET 6+-app
Om du använder både Visual Studio 2022 och arbetar med appar som är inriktade på .NET 6+, får du fördelarna med den mest polerade och kompatibla hot reload-upplevelsen.
Stöds i det här scenariot:
- Blazor-applikationer (Server och WebAssembly)
- Redigera Razor-filer på både Blazor- och vanliga ASP.NET Core-webbplatser
- CSS Snabb inläsning
- XAML-het omladdning
- Stöd för Hot Reload vid körning av appar utan felsökningsprogrammet (som beskrivits tidigare i mer detalj)
Om du riktar in dig på .NET 6+ fortsätter du att få förbättringar i kommande Visual Studio 2022-uppdateringar och .NET-funktionsband och större versioner.
ASP.NET grundläggande scenarier som stöds
Den grundläggande funktionen för snabb inläsning stöds för många ASP.NET scenarier. Den mest tillgängliga funktionen är möjligheten att ändra kod bakom och andra .NET-klassfiler för de flesta typer av webbprogram. Den här funktionen fungerar när du använder Visual Studio-felsökningsprogrammet och är tillgänglig var som helst där Hot Reload tidigare var tillgänglig. Mer specifik vägledning finns i .NET Hot Reload-stöd för ASP.NET Core.
För ASP.NET Core-utvecklare som riktar in sig på .NET 6+ finns det ytterligare funktioner som inte är tillgängliga för lägre versioner av .NET. Dessa funktioner omfattar:
- CSHTML: Redigering av en Razor CSHTML-fil stöder många typer av redigeringar.
- Webbläsaruppdatering: Redigering av en razor-fil uppdaterar automatiskt ändringarna i webbläsaren vid felsökning. Den här funktionen var tidigare endast tillgänglig när appen startades utan felsökningsprogrammet.
- CSS Hot Reload: Du kan ändra CSS-filer medan appen körs och ändringar tillämpas omedelbart på appen som körs när du skriver.
- Inget felsökningsprogram: Du får stöd för snabb inläsning när du använder Visual Studio för att starta webbappen utan felsökningsprogrammet (CTRL-F5).
.NET-ändringar som stöds
.NET Hot Reload-funktionen drivs av felsökaren och C#-kompilatorn (Roslyn). Roslyn har stöd för redigeringar och kodändringar som stöds (C# och VB) lista vilka typer av redigeringar som för närvarande stöds och potentiella framtida förbättringar.
.NET-projekt som inte stöds
Hot Reload är inte tillgänglig i vissa projektkonfigurationer:
- Om du använder Visual Studio utan felsökningsprogrammet fungerar hot reload endast för .NET-appar som riktar sig till .NET 6+.
- Om du använder felsökningsprogrammet i Visual Studio för att köra din app, men har inaktiverat
Enable Hot Reload and Edit and Continue when debugging
i inställningarna, stöds inte Hot Reload. - Versionskonfigurationer eller anpassade byggkonfigurationer stöds inte. Projektet måste använda konfigurationen
Debug
build. - Om du riktar in dig på ett F#- eller .NET Native-projekt.
- Vissa start- eller kompileringsoptimeringar stöds inte i .NET Hot Reload. Om projektets felsökningsprofil till exempel har konfigurerats på följande sätt stöds inte .NET Hot Reload:
-
Trimning är aktiverad för ditt projekt. Det stöds till exempel inte om
PublishTrimmed
är inställt på Sant i projektfilen för felsökningsprofilen. -
ReadyToRun- är aktiverat för projektet. Det stöds till exempel inte om
PublishReadyToRun
är inställt på Sant i projektfilen för felsökningsprofilen.
-
Trimning är aktiverad för ditt projekt. Det stöds till exempel inte om
Mer information finns i scenarier som inte stöds.
Konfigurera Hot Reload
Information om hur du aktiverar, inaktiverar eller konfigurerar Hot Reload finns i Konfigurera Redigera och fortsätt.
Varningsmeddelande
Om du ser följande dialogruta kan Hot Reload inte tillämpa de aktuella redigeringarna utan att starta om. Du kan välja att antingen återskapa appen och tillämpa ändringar (starta om) eller fortsätta redigera. Om du bygger om går allt programtillstånd förlorat. Om du fortsätter att redigera är det möjligt att ytterligare ändringar eller korrigeringar kan göra att Hot Reload fungerar igen.
Om du väljer Återskapa alltid när ändringar inte kan tillämpas alternativet i dialogrutan visas inte dialogrutan igen i den aktuella Visual Studio-sessionen, och Visual Studio återskapas automatiskt och läses in igen i stället för att dialogrutan visas.
Felsökning
Vi rekommenderar starkt att du kontrollerar Hot Reload-utdata-fönstret för detaljerad diagnostikinformation om Hot Reload-sessionen.
Om du använder svarskomprimering på .NET Core kan du läsa informationen om svarskomprimering.