Psaní a ladění spuštěný kód pomocí Opětovné načítání za provozu v sadě Visual Studio (C#, Visual Basic, C++)

Počínaje sadou Visual Studio 2022 funguje prostředí Opětovné načítání za provozu v sadě Visual Studio pro spravované aplikace .NET i nativní aplikace C++. Bez ohledu na typ aplikace, na které pracujete, je záměrem Opětovné načítání za provozu ušetřit tolik restartování aplikací mezi úpravami, což vám umožní zvýšit produktivitu tím, že zkracuje dobu strávenou čekáním na opětovné sestavení aplikací, restartováním a opětovným přechodem na předchozí místo, kde jste byli v samotné aplikaci atd.

Toho dosáhneme tak, že budete moct upravovat soubory kódu vaší aplikace a okamžitě aplikovat změny kódu na spuštěnou aplikaci, označovanou také jako Opětovné načítání za provozu. Po použití změn znovu spusťte kód provedením akce v samotné aplikaci (nebo pomocí nějakého časovače atd.) a okamžitě se podívejte na změny; Není vyžadováno pozastavení aplikace přes zarážky.

Aktualizace spuštěného kódu pomocí Opětovné načítání za provozu

  1. Otevřete projekt založený na podporovaném typu aplikace. Viz podporované aplikace .NET a C++ .

  2. Spusťte aplikaci pomocí ladicího programu připojeného pomocí klávesy F5 nebo ctrl+F5( pokud je to podporováno).

  3. Otevřete soubor kódu a změňte kód.

  4. Pomocí tlačítka Opětovné načítání za provozu použijte změny kódu nebo stiskněte kombinaci kláves ALT+F10.

    Screenshot of the Hot Reload button.

Pokud chcete zobrazit změny v uživatelském rozhraní, je potřeba kód znovu spustit. Například kód za tlačítkem se musí znovu spustit nebo kód, který se aktivuje v intervalu prostřednictvím časovače. V dalším příkladu ASP.NET Core podporuje automatické aktualizace prohlížeče z důvodu funkce MetadataUpdateHandler .

Podpora aplikací .NET

  • Při použití sady Visual Studio 2022 a spuštění aplikace pomocí ladicího programu funguje základní Opětovné načítání za provozu prostředí s většinou typů aplikací a rozhraní .NET. To zahrnuje rozhraní .NET Framework, .NET Core a .NET 5+ (pro jazyk C# i Visual Basic podle potřeby). Očekávání v tomto scénáři spočívá v tom, že pokud používáte ladicí program, předpokládejme, že Opětovné načítání za provozu je pro vás k dispozici, a zkuste to!
  • Při použití sady Visual Studio 2022, ale ne při použití ladicího programu (například spuštění aplikace pomocí CTRL-F5), Opětovné načítání za provozu je k dispozici při cílení na většinu typů aplikací .NET 6. To znamená, že aplikace necílící na .NET 6 (.NET 5 nebo novější) nepodporují scénář žádného ladicího programu a musí k získání podpory Opětovné načítání za provozu použít ladicí program.
  • Při použití sady Visual Studio 2022 s aplikací .NET 6 se podporuje většina scénářů. To není omezeno na novou funkci "žádný ladicí program", kterou jsme zmínili výše. Zahrnuje také další nové funkce, jako je podpora opětovného načítání projektů Blazor za provozu a obecně i úpravy souborů Razor v jakýchkoli aplikacích ASP.NET Core a Opětovné načítání za provozu CSS. Použití sady Visual Studio 2022 a aplikací, které cílí na .NET 6 společně, vám poskytne nejvýkonnější Opětovné načítání za provozu prostředí.

Následující tabulka ukazuje, které projekty podporují .NET Opětovné načítání za provozu s připojeným ladicím programem (F5) a bez připojeného ladicího programu (Ctrl+F5), podle minimální verze .NET vyžadované pro podporu v sadě Visual Studio 2022 (17.8).

Typ aplikace F5 Ctrl+F5 MetadataUpdateHandler Podporu
Konzola .NET 6 .NET 6
Spuštění v Linuxu nebo macOS
(Docker a WSL)
.NET 8 .NET 6 .NET 8
Běh na 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 -- --

Typy úprav, které můžete provést pomocí Opětovné načítání za provozu, jsou určeny modulem runtime a verzí kompilátoru, nikoli metodou, kterou jste použili ke spuštění aplikace (F5 nebo Ctrl+F5).

V následujících částech rozbalíme výše uvedený souhrn a podíváme se na další podrobnosti.

Podpora aplikací C++

Při použití sady Visual Studio 2022 a spuštění aplikace pomocí ladicího programu můžete pomocí tlačítka Opětovné načítání za provozu znovu načíst nativní aplikaci C++. Opětovné načítání za provozu se podporuje také pro aplikace vytvořené pomocí projektů CMake a OpenFolder.

Abyste mohli projekt podporovat Opětovné načítání za provozu, budete potřebovat:

  • Vlastnosti projektu > C/C++ > – Obecný >formát informací o ladění musí být nastaven na "Programová databáze pro úpravy a pokračování/ZI">
  • Obecné >povolení přírůstkového propojení vlastností >> projektu > musí být nastaveno na Ano/INCREMENTAL.

Podporované úpravy najdete v tématu Změny podporovaného kódu jazyka C++.

Visual Studio 2022 s aplikací .NET při použití ladicího programu

Při použití sady Visual Studio 2022 a spuštění aplikace pomocí ladicího programu Opětovné načítání za provozu funguje s většinou architektur aplikací.

Kdekoli máte .NET a používáte spravovaný ladicí program sady Visual Studio, měli byste získat základní podporu Opětovné načítání za provozu. To znamená, že i projekty, jako je Azure Functions, fungují v tomto scénáři skvěle.

Poznámka:

Některé projekty používají ve výchozím nastavení ladění ve smíšeném režimu, které nepodporuje Opětovné načítání za provozu. Toto nastavení můžete upravit v nastavení projektu nastavením vlastností projektu >> Ladit > otevřené spouštěcí profily ladění uživatelského rozhraní > Povolit nativní ladění kódu na false.

Visual Studio 2022 s aplikací .NET, ale nepoužívá ladicí program

Opětovné načítání za provozu je k dispozici bez ladicího programu při cílení na většinu typů aplikací .NET 6 nebo novějších.

Tato funkce je exkluzivní pro .NET 6 nebo novější. Tyto aplikace, které necílí na .NET 6 nebo novější (tj. .NET 5 nebo níže), nebudou podporovat scénář žádného ladicího programu a musí používat ladicí program pro získání přístupu k Opětovné načítání za provozu funkcím.

Mějte také na paměti, že ne všechny typy projektů aktuálně podporují scénář "žádný ladicí program", viz podpora pro aplikace .NET.

Visual Studio 2022 s aplikací .NET 6 nebo novější

Pokud používáte Sadu Visual Studio 2022 i práci na aplikacích, které cílí na .NET 6 nebo novější, získáte výhody nejpracnějšího a nejpropracovanějšího prostředí Opětovné načítání za provozu.

Podporováno v tomto scénáři:

  • Aplikace Blazor (Server a WebAssembly)
  • Úpravy souborů Razor v blazoru i na běžných webech ASP.NET Core
  • Opětovné načítání za provozu šablon stylů CSS
  • Opětovné načítání XAML za provozu
  • Opětovné načítání za provozu podporu při spouštění aplikací bez ladicího programu (jak je popsáno výše)

Pokud cílíte na .NET 6 nebo novější, budete dál dostávat vylepšení v nadcházejících aktualizacích sady Visual Studio 2022 a v hlavních verzích.

Podporované ASP.NET základní scénáře

Základní Opětovné načítání za provozu prostředí je podporováno pro mnoho ASP.NET scénářů. Nejrozšířenější funkcí je schopnost měnit soubory tříd kódu a dalších tříd .NET pro většinu typů webových aplikací. Tato funkce funguje při používání ladicího programu sady Visual Studio a je k dispozici kdekoli Opětovné načítání za provozu byla dříve dostupná. Konkrétnější pokyny najdete v tématu .NET Opětovné načítání za provozu podpora ASP.NET Core.

Pro vývojáře ASP.NET Core, kteří cílí na .NET 6 nebo novější, nejsou pro nižší verze .NET k dispozici další možnosti. Mezi tyto schopnosti patří:

  • CSHTML: Úprava souboru Razor CSHTML podporuje mnoho typů úprav.
  • Aktualizace prohlížeče: Při ladění se při úpravě souboru razor automaticky aktualizují změny ve webovém prohlížeči. Tato funkce byla dříve dostupná pouze při spuštění aplikace bez ladicího programu.
  • Opětovné načítání za provozu CSS: Soubory CSS můžete změnit, když je aplikace spuštěná, a změny se při psaní použijí okamžitě na spuštěnou aplikaci.
  • Žádný ladicí program: Při spuštění webové aplikace bez ladicího programu (CTRL-F5) pomocí sady Visual Studio získáte podporu Opětovné načítání za provozu.

Podporované změny .NET

Prostředí .NET Opětovné načítání za provozu využívá ladicí program a kompilátor jazyka C# (Roslyn). V seznamu podporovaných úprav a podporovaných změn kódu (C# a VB) jsou aktuálně podporované typy úprav a potenciální budoucí vylepšení.

Nepodporované projekty .NET

Opětovné načítání za provozu není v některých konfiguracích projektu k dispozici:

  • Pokud používáte Visual Studio bez ladicího programu, Opětovné načítání za provozu funguje jenom pro aplikace .NET, které cílí na .NET 6 nebo novější.
  • Pokud ke spuštění aplikace používáte ladicí program sady Visual Studio, ale v nastavení jste zakázaliEnable Hot Reload and Edit and Continue when debugging, Opětovné načítání za provozu se nepodporuje.
  • Konfigurace vydaných nebo vlastních sestavení se nepodporují. Projekt musí používat Debug konfiguraci sestavení.
  • Pokud cílíte na projekt F# nebo .NET Native.
  • V rozhraní .NET Opětovné načítání za provozu nejsou podporovány některé optimalizace spouštění nebo kompilace. Pokud je například profil ladění projektu nakonfigurovaný následujícími způsoby, Opětovné načítání za provozu .NET se nepodporuje:
    • Pro váš projekt je povolené oříznutí. Nepodporuje se například, pokud PublishTrimmed je v souboru projektu pro profil ladění nastavená hodnota True.
    • ReadyToRun je pro váš projekt povolený. Nepodporuje se například, pokud PublishReadyToRun je v souboru projektu pro profil ladění nastavená hodnota True.

Další podrobnosti najdete v tématu Nepodporované scénáře .

Konfigurace Opětovné načítání za provozu

Pokud chcete povolit, zakázat nebo nakonfigurovat Opětovné načítání za provozu, přečtěte si téma Konfigurace úprav a pokračování.

Zpráva s upozorněním

Pokud se zobrazí následující dialogové okno, Opětovné načítání za provozu nemůže použít aktuální úpravy bez restartování. Můžete zvolit, jestli chcete aplikaci znovu sestavit a použít změny (restartovat), nebo pokračovat v úpravách. Při opětovném sestavení dojde ke ztrátě stavu aplikace. Pokud budete pokračovat v úpravách, je možné, že další změny nebo opravy můžou způsobit, že Opětovné načítání za provozu znovu fungovat.

Screenshot of the apply changes dialog box

Pokud v dialogovém okně vyberete možnost Vždy znovu sestavit, pokud změny nelze použít , dialogové okno se znovu nezobrazí v aktuální relaci sady Visual Studio a sada Visual Studio se automaticky znovu sestaví a znovu načte místo zobrazení dialogového okna.

Řešení problému

Důrazně doporučujeme zkontrolovat okno výstupu Opětovné načítání za provozu s podrobnými diagnostickými informacemi týkajícími se relace Opětovné načítání za provozu.

Pokud používáte kompresi odpovědí v .NET Core, přečtěte si informace o kompresi odpovědí.