Kodändringar som stöds (C# och Visual Basic)
Mekanismen Hot Reload, tidigare kallad "Edit and Continue", hanterar de flesta typer av kodändringar inom metodkroppar. De flesta ändringar utanför metodkroppar, och några ändringar i metodkroppar, kan dock inte tillämpas under felsökning. Om du vill tillämpa ändringarna som inte stöds måste du sluta felsöka och starta om med en ny version av koden.
Mekanismen Redigera och fortsätt hanterar de flesta typer av kodändringar i metodkroppar. De flesta ändringar utanför metodkroppar, och några ändringar i metodkroppar, kan dock inte tillämpas under felsökning. Om du vill tillämpa ändringarna som inte stöds måste du sluta felsöka och starta om med en ny version av koden.
Kodändringar som stöds
I följande tabell visas de ändringar som kan göras i C# och Visual Basic-kod under en felsökningssession utan att starta om sessionen.
Språkelement eller funktion | Redigeringsåtgärd som stöds | Begränsningar |
---|---|---|
Typer | Lägg till metoder, fält, konstruktorer med mera | Ja |
Iteratorer | Lägga till eller ändra | Nej |
async/await-uttryck | Lägga till eller ändra | Ja |
Dynamiska objekt | Lägga till eller ändra | Nej |
lambda-uttryck | Lägga till eller ändra | Ja |
LINQ-uttryck | Lägga till eller ändra | Samma som lambda-uttryck |
Generika | Lägga till eller ändra | Ja |
Språkelement eller funktion | Redigeringsåtgärd som stöds | Begränsningar |
---|---|---|
Typer | Lägg till metoder, fält, konstruktorer med mera | Ja |
Iteratorer | Lägga till eller ändra | Nej |
async/await-uttryck | Lägga till eller ändra | Ja |
Dynamiska objekt | Lägga till eller ändra | Nej |
lambda-uttryck | Lägga till eller ändra | Ja |
LINQ-uttryck | Lägga till eller ändra | Samma som lambda-uttryck |
Not
Nyare språkfunktioner som stränginterpolation och null-villkorsstyrda operatorer stöds vanligtvis av Redigera och Fortsätt. För den mest aktuella informationen hittar du på sidan Redigeringar som stöds.
Förbättringar av .NET 6+
Förbättringar i .NET 6+ och Visual Studio 2022 och senare versioner omfattar stöd för fler typer av redigeringar som går utöver vad som ursprungligen var möjligt i äldre versioner av Visual Studio. De här förbättringarna är tillgängliga för både Hot Reload och upplevelserna Redigera och Fortsätt.
.NET 6+ Hot Reload-funktionen drivs av mekanismen Redigera och fortsätt och Roslyn. Redigeringar som stöds listar de typer av redigeringar som för närvarande stöds av Roslyn och potentiella framtida förbättringar.
Ändringar i kod som inte stöds
Följande ändringar kan inte tillämpas på C#- och Visual Basic-kod under en felsökningssession.
Ändringar i det aktuella uttalandet eller något annat aktivt uttalande.
En aktiv instruktion är en instruktion i en funktion i anropsstacken som anropades för att komma till den aktuella instruktionen.
Den aktuella uttalandet visas på en gul bakgrund i källfönstret. Andra aktiva instruktioner visas på en skuggad bakgrund och är skrivskyddade. Dessa standardfärger kan ändras i dialogrutan Alternativ.
Ändringar av kod efter språkelement som inte stöds enligt beskrivningen i följande tabell.
Språkelement eller funktion Redigeringsåtgärden stöds inte Alla kodelement Döpa om Namnområden Addera Namnområden, typer, medlemmar Ta bort Gränssnitt Modifiera Typer Lägg till abstrakt eller virtuell medlem, lägg till åsidosättning (se information) Typer Lägg till destructor Medlemmar – Ändra en medlemsvariabel som refererar till en inbäddad interop-typ
– Ändra en statisk medlem efter att den redan har åtkommits genom utförd kodMedlemmar (Visual Basic) – Ändra en medlem med instruktionen Vid fel eller Fortsätt
– Ändra en medlem som innehåller en LINQ-frågesats för aggregering, gruppera efter, enkel koppling eller gruppkopplingMetoder – Ändra signaturer
– Gör så att en abstrakt metod blir ickeabstract genom att lägga till en metodtext
– Ta bort metodtextAttribut Lägga till eller ändra Händelser eller egenskaper Ändra en typparameter, bastyp, ombudstyp eller returtyp Operatorer eller indexerare Ändra en typparameter, bastyp, ombudstyp eller returtyp fångstblock Ändra när den innehåller en aktiv instruktion try-catch-finally-block Ändra när den innehåller en aktiv instruktion använda instruktioner Addera asynkrona metoder/lambdas Ändra en asynkron metod/lambda i ett projekt som riktar sig mot .NET Framework 4 och lägre (se detaljer) Iteratorer Ändra en iterator i ett projekt som är riktat mot .NET Framework 4 och tidigare (se information) Språkelement eller funktion Redigeringsåtgärden stöds inte Alla kodelement Byta namn Namnområden Addera Namnområden, typer, medlemmar Ta bort Generika Lägga till eller ändra Gränssnitt Modifiera Typer Lägg till abstrakt eller virtuell medlem, lägg till överskrivning (se detaljer) Typer Lägg till destructor Medlemmar – Ändra en medlem som refererar till en inbäddad interop-typ
– Ändra en statisk medlem när den redan har använts genom att köra kodMedlemmar (Visual Basic) – Modifiera en medlem med instruktionen On Error eller Resume
– Ändra en medlem som innehåller en LINQ-frågesats för aggregering, gruppera efter, enkel koppling eller gruppkopplingMetoder – Ändra signaturer
– Gör så att en abstrakt metod blir ickeabstract genom att lägga till en metodtext
– Ta bort metodtextAttributen Lägga till eller ändra Händelser eller egenskaper Ändra en typparameter, bastyp, ombudstyp eller returtyp Operatorer eller indexerare Ändra en typparameter, bastyp, ombudstyp eller returtyp catch blocks Ändra när den innehåller en aktiv instruktion try-catch-finally-block Ändra när den innehåller en aktiv instruktion använda satser Addera asynkrona metoder/lambdas Ändra en asynkron metod/lambda i ett projekt som riktar sig mot .NET Framework 4 och lägre (se detaljer) Iteratorer Ändra en iterator i ett projekt som är riktat mot .NET Framework 4 och tidigare (se information)
Osäker kod
Ändringar av osäker kod har samma begränsningar som ändringar av säker kod, med en extra begränsning: Redigera och Fortsätt stöder inte ändringar av osäker kod som avslutas inom en metod som innehåller stackalloc
-operatorn.
Programstöd
Exempel på program som stöds är:
- UWP-appar i Windows 10 eller Windows 11
- x86- och x64-appar som riktar sig till .NET Framework 4.6 Desktop eller senare versioner (.NET Framework är endast en skrivbordsversion)
För .NET 6 och senare stöds redigering för följande filtyper:
- .cshtml
- .razor
Appar, plattformar och åtgärder som inte stöds
Program eller plattformar som inte stöds är:
- F#
- .NET Native
- Silverlight 5
- Windows 8.1
- Xamarin.Forms (iOS och Android)
För ASP.NET och ASP.NET Core stöds inte redigering för följande filtyper:
- .aspx
- .ascx
- .aspx
- .ascx
- .cshtml
- .razor
Scenarier som inte stöds
Redigera och fortsätt är inte tillgängligt i följande felsökningsscenarier:
Felsökning i blandat läge (intern/hanterad).
Felsökning på Arm64 utan att rikta in sig på .NET 7 eller senare.
Felsökning med COR_ENABLE_PROFILING miljövariabeluppsättning.
Felsöka ett program med hjälp av koppla till process (Felsöka > Koppla till process) i stället för att köra programmet genom att välja Starta från menyn Debug. Om du vill använda Redigera och Fortsätt när du ansluter till en process måste COMPLUS_ForceENC miljövariabeln anges innan processen startas (
set COMPLUS_ForceENC=1
).Felsökning med nondeterministiska (till exempel tidsbaserade) sammansättningsversioner. Om du vill använda Redigera och Fortsätt kan du överväga att endast ange versionen i Versionsversioner (eller CI) och hålla versionen i Felsökningsversioner konstant.
Felsöka optimerad kod.
SQL-felsökning.
Felsöka en dumpfil.
Felsöka en inbäddad runtime-applikation.
Felsöka en gammal version av koden efter att en ny version inte kunde skapas på grund av byggfel.