Dela via


Skriva och felsöka körningskod med Hot Reload i Visual Studio (C#, Visual Basic, C++)

Hot Reload kallades tidigare Redigera och Fortsätt i Visual Studio-dokumentation och vissa äldre användargränssnittstexter.

Från och med Visual Studio 2022 fungerar den Hot Reload upplevelsen i Visual Studio för både hanterade .NET och interna C++-appar. Oavsett vilken typ av app du arbetar med är avsikten med Hot Reload 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 och navigera till den tidigare platsen där du var i själva appen.

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 kod som körs med Hot Reload

  1. Öppna ett projekt baserat på en programtyp som stöds. Se .NET och C++ program som stöds.

  2. Starta appen med felsökningsprogrammet kopplat med antingen F5 eller om det stödsCtrl+F5.

  3. Öppna en kodfil och ändra koden.

  4. Använd kodändringarna med hjälp av Hot ReloadSkärmbild av knappen Hot Reload icon. eller tryck på ALT+F10.

    Skärmbild av Hot Reload.

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 funktionen MetadataUpdateHandler.

Stöd för .NET program

  • När du använder Visual Studio 2022 och startar appen med felsökningsprogrammet fungerar den grundläggande Hot Reload upplevelsen 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äntningen i det här scenariot är att om du använder felsökningsprogrammet antar du att Hot Reload är tillgänglig för dig och gör ett försök!
  • När du använder Visual Studio 2022 men inte använder felsökaren (t.ex. att använda CTRL-F5 för att starta applikationen), är Hot Reload tillgänglig när du riktar in dig på de flesta typer av .NET 6-appar. I det här scenariot stöder appar som inte är inriktade på .NET 6+ (dvs. mål .NET 5 eller senare) inte scenariot "inget felsökningsprogram" och måste använda felsökningsprogrammet 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ämnts tidigare. 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. Att använda Visual Studio 2022 och appar som riktar sig mot .NET 6 tillsammans ger dig den mest kraftfulla Hot Reload upplevelsen.

I följande tabell visas den lägsta .NET version som krävs för att stödja .NET Hot Reload med det anslutna felsökningsprogrammet (F5) och utan att felsökaren är ansluten (Ctrl+F5), baserat på projekttyp. Visual Studio 2022 version 17.8 eller senare krävs.

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 redigeringar som du kan göra med Hot Reload bestäms av körnings- och kompileringsversionen, 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 .NET Framework-program

När du använder Visual Studio 2022 och startar appen med felsökningsprogrammet fungerar den grundläggande Hot Reload upplevelsen 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äntningen i det här scenariot är att om du använder felsökningsprogrammet antar du att Hot Reload är tillgänglig för dig och gör ett försök!

Stöd för C++-program

När du använder Visual Studio 2022 och startar appen med felsökaren kan du utföra varmladdning av ett inbyggt C++-program när du kör under felsökaren (F5) med hjälp av knappen Hot Reload. Hot Reload stöds också för appar som skapats med hjälp av CMake- och OpenFolder-projekt.

För att projektet ska kunna stödja Hot Reload behöver du följande alternativ inställda:

  • Project > Egenskaper > C/C++ > Allmänt >Felsökningsinformationsformat måste anges till "Programdatabas för Redigering och Fortsättning /ZI"
  • Projekt > Egenskaper > Länkare > Allmänt >Aktivera Inkrementell Länkning måste vara inställd på "Ja/INCREMENTAL"

Information om ändringar som stöds finns i kodändringar som stöds av C++.

Visual Studio 2022 med en .NET- eller .NET Framework-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 det Visual Studio hanterade felsökningsprogrammet bör du få grundläggande Hot Reload support. Det innebär att även projekt som Azure Functions fungerar bra i det här scenariot.

Not

Som standard 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 ange Project > Properties > Debug > Open debug launch profiles UI > Enable native code debugging till falskt.

Visual Studio 2022 med en .NET-app, men inte med felsökningsprogrammet

Hot Reload är tillgängligt utan felsökningsprogrammet när du riktar in dig på de flesta typer av .NET 6+-appar.

Den här funktionen är exklusiv för .NET 6+. De appar som inte är avsedda för .NET 6+ (dvs. mål .NET 5 eller senare) stöder inte scenariot "inget felsökningsprogram" och måste använda felsökningsprogrammet för att få åtkomst till Hot Reload funktioner.

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 Hot Reload
  • XAML Hot Reload
  • Hot Reload-stöd när appar körs utan felsökaren (enligt beskrivningen tidigare i detalj)

Om du använder .NET 6+ fortsätter du att få förbättringar i kommande uppdateringar i Visual Studio 2022 och .NET funktionsband och större utgåvor.

ASP.NET Core-scenarier som stöds

Den grundläggande Hot Reload-upplevelsen 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 felsökningsprogrammet i Visual Studio och är tillgänglig överallt där Hot Reload tidigare var tillgänglig. Mer specifik vägledning finns i .NET Hot Reload support för ASP.NET Core.

För ASP.NET Core utvecklare som är inriktade 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 ändringarna tillämpas omedelbart på appen som körs när du skriver.
  • No Debugger: Du får Hot Reload support när du använder Visual Studio för att starta webbappen utan felsökningsprogrammet (CTRL-F5).

.NET ändringar som stöds

Den .NET Hot Reload funktionen drivs av debugger 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.

Ändringar i .NET Framework som stöds

.NET Hot Reload-upplevelsen drivs av kompilatorn debugger och C#. Kodändringar som stöds (C# och VB) listar de typer av redigeringar som för närvarande stöds och potentiella framtida förbättringar.

.NET- och .NET Framework-projekt som inte stöds

Hot Reload är inte tillgängligt i vissa projektkonfigurationer:

  • Om du använder Visual Studio utan felsökningsprogrammet fungerar Hot Reload bara för .NET appar som är inriktade på .NET 6+.
  • Om du använder Visual Studio felsökningsprogrammet för att köra appen, men du 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 internt 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 har aktiverats 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.

Mer information finns i scenarier som inte stöds.

Hot Reload stöds inte för F#

Hot Reload eller Redigera och Fortsätt stöds inte när du felsöker F#-kod. Det går att redigera F#-kod under en felsökningssession, men bör undvikas. Kodändringar tillämpas inte under felsökningssessionen. Därför resulterar alla ändringar som görs i F#-koden medan du felsöker källkoden som inte matchar koden som debuggas.

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 alla programtillstånd förlorade. Om du fortsätter att redigera är det möjligt att ytterligare ändringar eller korrigeringar kan leda till att Hot Reload fungerar igen.

Skärmbild av dialogrutan Tillämpa ändringar.

Skärmbild av dialogrutan Tillämpa ändringar.

Om du väljer alternativet Återskapa alltid när ändringar inte kan tillämpas i dialogrutan, visas inte dialogrutan igen i den aktuella Visual Studio-sessionen, och Visual Studio kommer automatiskt återskapa och ladda om istället för att visa dialogrutan.

Felsökning

Om Hot Reload inte fungerar som förväntat kontrollerar du följande:

  • Kontrollera att du kör en app och ett scenario som stöds. Vissa projekttyper, felsökning i blandat läge, optimerad kod och Anslutning till process scenarier stöder inte Hot Reload. Mer information finns i Scenarier som inte stöds.
  • Kontrollera att appen använder en Debug-konfiguration och att Hot Reload är aktiverat i Tools>Options>Debugging>.NET/C++ Hot Reload.
  • Ange Logging Verbosity till Detailed eller Diagnostic för att få mer information i Hot Reload utdata.
  • Öppna fönstret Output och i Show output from väljer du Hot Reload för att granska diagnostikmeddelanden.
  • Om en rad visas skrivskyddad vid felsökning kan det vara en aktiv instruktion i anropsstacken, eller så kan redigeringen kräva en omstart.

En lista över vanliga diagnostik finns i Hot Reload och redigera och fortsätt felmeddelanden. Om problemet kvarstår och utdata inte visar någon tydlig orsak använder du Rapportera ett problem för att skicka feedback till Visual Studio-teamet.

Om du använder svarskomprimering på .NET Core kan du läsa informationen om response compression.