Podporované změny kódu (C# a Visual Basic)
Mechanismus Opětovné načítání za provozu, dříve označovaný jako Edit and Continue, zpracovává většinu typů změn kódu v tělech metody. Většina změn mimo těla metody a několik změn v těle metody se ale během ladění nedá použít. Pokud chcete tyto nepodporované změny použít, musíte zastavit ladění a restartovat s novou verzí kódu.
Mechanismus Edit and Continue zpracovává většinu typů změn kódu v tělech metody. Většina změn mimo těla metody a několik změn v těle metody se ale během ladění nedá použít. Pokud chcete tyto nepodporované změny použít, musíte zastavit ladění a restartovat s novou verzí kódu.
Podporované změny kódu
Následující tabulka ukazuje změny, které mohou být provedeny v kódu jazyka C# a Visual Basic během ladicí relace bez restartování relace.
Element nebo funkce jazyka | Podporovaná operace úprav | Omezení |
---|---|---|
Typy | Přidání metod, polí, konstruktorů a dalších | Ano |
Iterátory | Přidání nebo úprava | No |
výrazy async/await | Přidání nebo úprava | Ano |
Dynamické objekty | Přidání nebo úprava | No |
lambda – výrazy | Přidání nebo úprava | Ano |
Výrazy LINQ | Přidání nebo úprava | Stejné jako výrazy lambda |
Obecné typy | Přidání nebo úprava | Ano |
Element nebo funkce jazyka | Podporovaná operace úprav | Omezení |
---|---|---|
Typy | Přidání metod, polí, konstruktorů a dalších | Ano |
Iterátory | Přidání nebo úprava | No |
výrazy async/await | Přidání nebo úprava | Ano |
Dynamické objekty | Přidání nebo úprava | No |
lambda – výrazy | Přidání nebo úprava | Ano |
Výrazy LINQ | Přidání nebo úprava | Stejné jako výrazy lambda |
Poznámka:
Novější jazykové funkce, jako je interpolace řetězců a podmíněné operátory s hodnotou null, jsou obecně podporovány funkcí Upravit a Pokračovat. Nejaktuálnější informace najdete na stránce Podporované úpravy Enc.
Vylepšení .NET 6 nebo novější
Vylepšení v .NET 6 nebo novějších verzích a v sadě Visual Studio 2022 a novějších verzích zahrnují podporu více typů úprav, které překračují rámec toho, co bylo původně možné ve starších verzích sady Visual Studio. Tato vylepšení jsou dostupná pro Opětovné načítání za provozu i prostředí pro úpravy a pokračování.
Rozhraní .NET 6 a novější Opětovné načítání za provozu využívá mechanismus Upravit a pokračovat a Roslyn. Podporované úpravy uvádějí typy úprav, které roslyn aktuálně podporuje, a potenciální budoucí vylepšení.
Nepodporované změny kódu
Následující změny nelze použít pro kód jazyka C# a Visual Basic během relace ladění.
Změní aktuální příkaz nebo jakýkoli jiný aktivní příkaz.
Aktivní příkaz je libovolný příkaz ve funkci v zásobníku volání, který byl volána, aby se dostal k aktuálnímu příkazu.
Aktuální příkaz se zobrazí na žlutém pozadí ve zdrojovém okně. Další aktivní příkazy se zobrazují na stínovaném pozadí a jsou jen pro čtení. Tyto výchozí barvy lze změnit v dialogovém okně Možnosti .
Všechny nepodporované změny kódu podle elementu jazyka, jak je uvedeno v následující tabulce.
Element nebo funkce jazyka Nepodporovaná operace úprav Všechny prvky kódu Přejmenování Obory názvů Přidat Obory názvů, typy, členy Odstranění Rozhraní Změnit Typy Přidání abstraktního nebo virtuálního člena, přidání přepsání (viz podrobnosti) Typy Přidání destruktoru Členové - Úprava členu odkazujícího na vložený typ zprostředkovatele komunikace
- Úprava statického členu po jeho přístupu spuštěním kóduČlenové (Visual Basic) - Úprava člena pomocí příkazu On Error nebo Resume
- Úprava člena obsahujícího klauzuli dotazu LinQ Agregovat, Seskupovat podle, Simple Join nebo Group JoinMetody - Úprava podpisů
- Vytvoření abstraktní metody se stane nonabstract přidáním těla metody
- Odstranění těla metodyAtributy Přidání nebo úprava Události nebo vlastnosti Úprava parametru typu, základního typu, typu delegáta nebo návratového typu Operátory nebo indexery Úprava parametru typu, základního typu, typu delegáta nebo návratového typu catch – bloky Upravit, když obsahuje aktivní příkaz bloky try-catch-finally Upravit, když obsahuje aktivní příkaz using – příkazy Přidat asynchronní metody /lambdas Úprava asynchronní metody nebo lambda v projektu, který cílí na rozhraní .NET Framework 4 a nižší (viz podrobnosti) Iterátory Úprava iterátoru v projektu, který cílí na rozhraní .NET Framework 4 a starší (viz podrobnosti) Element nebo funkce jazyka Nepodporovaná operace úprav Všechny prvky kódu Přejmenování Obory názvů Přidat Obory názvů, typy, členy Odstranění Obecné typy Přidání nebo úprava Rozhraní Změnit Typy Přidání abstraktního nebo virtuálního člena, přidání přepsání (viz podrobnosti) Typy Přidání destruktoru Členové - Úprava členu odkazujícího na vložený typ zprostředkovatele komunikace
- Úprava statického členu po jeho přístupu spuštěním kóduČlenové (Visual Basic) - Úprava člena pomocí příkazu On Error nebo Resume
- Úprava člena obsahujícího klauzuli dotazu LinQ Agregovat, Seskupovat podle, Simple Join nebo Group JoinMetody - Úprava podpisů
- Vytvoření abstraktní metody se stane nonabstract přidáním těla metody
- Odstranění těla metodyAtributy Přidání nebo úprava Události nebo vlastnosti Úprava parametru typu, základního typu, typu delegáta nebo návratového typu Operátory nebo indexery Úprava parametru typu, základního typu, typu delegáta nebo návratového typu catch – bloky Upravit, když obsahuje aktivní příkaz bloky try-catch-finally Upravit, když obsahuje aktivní příkaz using – příkazy Přidat asynchronní metody /lambdas Úprava asynchronní metody nebo lambda v projektu, který cílí na rozhraní .NET Framework 4 a nižší (viz podrobnosti) Iterátory Úprava iterátoru v projektu, který cílí na rozhraní .NET Framework 4 a starší (viz podrobnosti)
Nebezpečný kód
Změny nebezpečného kódu mají stejná omezení jako změny bezpečného kódu s jedním omezením navíc: Edit and Continue nepodporuje změny nebezpečného kódu, který končí v metodě obsahující operátor stackalloc
.
Podpora aplikací
Mezi podporované aplikace patří:
- Aplikace pro UPW ve Windows 10 nebo Windows 11
- Aplikace x86 a x64, které cílí na desktopovou nebo novější verzi rozhraní .NET Framework 4.6 (rozhraní .NET Framework je pouze desktopová verze)
Pro .NET 6 a novější se úpravy podporují pro následující typy souborů:
- .cshtml
- .Břitva
Nepodporované aplikace, platformy a operace
Mezi nepodporované aplikace nebo platformy patří:
- F#
- .NET Native
- Silverlight 5
- Windows 8.1
- Xamarin.Forms (iOS a Android)
U ASP.NET a ASP.NET Core se úpravy nepodporují u následujících typů souborů:
- .aspx
- .ascx
- .aspx
- .ascx
- .cshtml
- .Břitva
Nepodporované scénáře
Funkce Upravit a pokračovat není dostupná v následujících scénářích ladění:
Ladění ve smíšeném režimu (nativní nebo spravované)
Ladění v Arm64 bez cílení na .NET 7 nebo novější
Ladění pomocí sady proměnných prostředí COR_ENABLE_PROFILING .
Ladění aplikace pomocí připojení ke zpracování (ladění > připojit k procesu) místo spuštění aplikace v nabídce Spustit z nabídky Ladění . Pokud chcete při připojování k procesu použít funkci Upravit a pokračovat, musí být před spuštěním procesu nastavena proměnná prostředí COMPLUS_ForceENC .
set COMPLUS_ForceENC=1
Ladění s nedeterministickými (například časovými) verzemi sestavení. Pokud chcete použít funkci Upravit a pokračovat, zvažte nastavení verze pouze v buildech vydané verze (nebo CI) a ponechte verzi v buildech Ladění konstantní.
Ladění optimalizovaného kódu
Ladění SQL
Ladění souboru s výpisem paměti
Ladění vložené aplikace modulu runtime
Ladění staré verze kódu po nové verzi se nepodařilo sestavit kvůli chybám sestavení.