Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Opětovné načítání za provozu byla dříve v dokumentaci k Visual Studio a v některých starších textových částech uživatelského rozhraní označována jako Edit and Continue (Upravit a pokračovat).
Od Visual Studio 2022 funguje zkušenost s Opětovné načítání za provozu ve Visual Studiu 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 co nejvíce restartů aplikace mezi úpravami, čímž zvýšíte svou produktivitu tím, že zkrátíte dobu strávenou čekáním na opětovné sestavení, restartování aplikace a návrat na předchozí místo, kde jste byli v aplikaci.
Zvyšujeme produktivitu tím, že vám umožní upravovat soubory kódu vaší aplikace a okamžitě aplikovat změny kódu na spuštěnou aplikaci, označované 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ých kódů pomocí Opětovné načítání za provozu
Otevřete projekt založený na podporovaném typu aplikace. Viz podporované aplikace .NET a C++.
Spusťte aplikaci s připojeným ladicím programem pomocí F5 nebo , pokud je podporovaná, Ctrl+F5.
Otevřete soubor kódu a změňte kód.
Změny kódu použijte pomocí tlačítka Opětovné načítání za provozu
nebo stiskněte ALT+F10.
Pokud chcete zobrazit změny v uživatelském rozhraní, je potřeba kód znovu spustit. Například kód propojený s 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 kvůli funkci MetadataUpdateHandler.
Podpora aplikací .NET
- Při použití Visual Studio 2022 a spuštění vaší aplikace pomocí ladicího programu funguje základní prostředí Opětovné načítání za provozu s většinou typů aplikací .NET a verzí rámce. Tato podpora zahrnuje .NET Framework, .NET Core a .NET 5 nebo novější (pro C# i Visual Basic podle potřeby). Pokud používáte debugger, předpokládejte, že máte k dispozici funkci Opětovné načítání za provozu, a vyzkoušejte ji!
- Pokud používáte Visual Studio 2022, ale nepoužíváte ladicí program (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. V tomto scénáři aplikace, které necílí na .NET 6 nebo novější (to znamená, že cílí na .NET 5 nebo níže), nepodporují scénář "žádný ladicí program" a musí použít ladicí program, aby získaly podporu Opětovné načítání za provozu.
- Pokud používáte Visual Studio 2022 s aplikací .NET 6 nebo novější, podporuje se většina scénářů. Tato podpora není omezena pouze na novou funkci "bez debuggeru", kterou jsme zmínili dříve. cs-CZ: Zahrnuje také další nové funkce, jako je podpora pro hot reload projektů Blazor a obecně i úpravy souborů Razor v libovolných aplikacích ASP.NET Core, a CSS Opětovné načítání za provozu. Díky Visual Studio 2022 a aplikacím, které cílí na .NET 6, získáte nejvýkonnější Opětovné načítání za provozu prostředí.
Následující tabulka uvádí minimální .NET verzi potřebnou k podpoře .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) na základě typu projektu. Visual Studio 2022 verze 17.8 nebo novější se vyžaduje.
| Typ aplikace | F5 | Ctrl+F5 | podpora MetadataUpdateHandler |
|---|---|---|---|
| Konzola | ✅ | .NET 6 | .NET 6 |
| Běží na Linuxu/macOS (Docker a WSL) |
.NET 8 | .NET 6 | .NET 8 |
| Běh na Arm64 | .NET 7 | .NET 7 | .NET 7 |
| WPF (Windows Presentation Foundation) | ✅ | .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 vytvořit s 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 uvádíme další podrobnosti.
Podpora aplikací .NET Framework
Při použití 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í .NET a verzí rozhraní. Tato podpora zahrnuje .NET Framework, .NET Core a .NET 5 nebo novější (pro C# i Visual Basic podle potřeby). Pokud používáte debugger, předpokládejte, že máte k dispozici funkci Opětovné načítání za provozu, a vyzkoušejte ji!
Podpora aplikací C++
Při použití Visual Studio 2022 a spuštění vaší aplikace s ladicím programem můžete nativní aplikaci C++ nabíjet během ladění (F5) pomocí tlačítka Opětovné načítání za provozu. Opětovné načítání za provozu se podporuje také pro aplikace vytvořené pomocí projektů CMake a OpenFolder.
Pro podporu Opětovné načítání za provozu projektu potřebujete následující možnosti:
- Project > Vlastnosti > C/C++ > Obecné >Debug Information Format musí být nastavená na "Programová databáze pro úpravy a pokračování
/ZI" - Project > Vlastnosti > Linker > Obecné >Povolit inkrementální propojování musí být nastaveno na "Ano
/INCREMENTAL"
Podporované úpravy najdete v tématu C++ Podporované změny kódu.
Visual Studio 2022 s aplikací .NET nebo .NET Framework při použití ladicího programu
Při použití 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ý debugger 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
Ve výchozím nastavení některé projekty používají 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 Project > Vlastnosti > Debug > Otevřít uživatelské rozhraní spouštěcích profilů ladění > Povolit ladění nativního kódu na vypnuto.
Visual Studio 2022 s aplikací .NET, aniž by se používal 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ů .NET 6 nebo více aplikací.
Tato funkce je exkluzivní pro .NET 6+. Tyto aplikace necílí na .NET 6 nebo novější (tj. cílí na .NET 5 nebo níže), nepodporují scénář žádného ladicího programu a musí používat ladicí program k získání přístupu k Opětovné načítání za provozu funkcím.
Ne všechny typy projektů v současné době podporují scénář "žádný ladicí program", viz Support for .NET applications.
Visual Studio 2022 s aplikací .NET 6 nebo novější
Pokud používáte Visual Studio 2022 a pracujete na aplikacích, které cílí na .NET 6+, získáte výhody z nejpropracovanějšího a nejúčinnějšího využití funkce Opětovné načítání za provozu.
Podporováno v tomto scénáři:
- Aplikace Blazor (Server a WebAssembly)
- Úpravy souborů Razor na webových stránkách typu Blazor a běžných stránkách ASP.NET Core
- Opětovné načítání za provozu šablon stylů CSS
- XAML Opětovné načítání za provozu
- Podpora Opětovné načítání za provozu při spouštění aplikací bez ladicího programu (jak bylo uvedeno 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 Visual Studio 2022 a v balíčku funkcí a v hlavních verzích .NET.
Podporované ASP.NET Core 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 možnost změnit soubory code-behind a další soubory tříd .NET u většiny typů webových aplikací. Tato funkce funguje při používání ladicího programu Visual Studio a je k dispozici kdekoli Opětovné načítání za provozu byla dříve dostupná. Konkrétnější pokyny viz podporu .NET Opětovné načítání za provozu pro ASP.NET Core.
Pro ASP.NET Core vývojáře, kteří cílí na .NET 6 nebo novější, nejsou pro nižší verze .NET k dispozici další možnosti. Mezi tyto možnosti patří:
- CSHTML: Úpravy souboru Razor CSHTML podporuje mnoho typů úprav.
- Aktualizace prohlížeče: Při ladění se při úpravách 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.
- CSS Opětovné načítání za provozu: 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.
- No Debugger: Podporu Opětovné načítání za provozu získáte při použití Visual Studio ke spuštění webové aplikace bez ladicího programu (CTRL-F5).
Podporované .NET změny
Prostředí .NET Opětovné načítání za provozu využívá kompilátor debugger a kompilátor jazyka C# (Roslyn). Roslyn podporuje úpravy a podporované změny kódu (C# a VB) seznam typů úprav, které jsou aktuálně podporovány a potenciální budoucí vylepšení.
Podporované změny rozhraní .NET Framework
Prostředí .NET Opětovné načítání za provozu využívá kompilátor debugger a C#. Podporované změny kódu (C# a VB) uvádějí typy úprav, které jsou aktuálně podporované, a potenciální budoucí vylepšení.
Nepodporované projekty .NET a .NET Framework
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 .NET aplikace cílené na .NET 6 nebo novější.
- Pokud ke spuštění aplikace používáte ladicí program Visual Studio, ale v nastavení jste zakázali
Enable Opětovné načítání za provozu and Edit and Continue when debugging, Opětovné načítání za provozu se nepodporuje. - Konfigurace sestavení pro vydání ani vlastní sestavení nejsou podporovány. Váš projekt musí používat konfiguraci sestavení
Debug. - Pokud cílíte na projekt F# nebo .NET Native.
- Některé optimalizace spouštění nebo kompilace se v .NET Opětovné načítání za provozu nepodporují. Pokud je například profil ladění projektu nakonfigurovaný následujícími způsoby, .NET Opětovné načítání za provozu se nepodporuje:
- Oříznutí je povoleno pro váš projekt. Například není podporováno, pokud je
PublishTrimmednastaveno na hodnotu True ve vašem souboru projektu pro ladicí profil. -
je pro váš projekt povolený ReadyToRun. Například není podporováno, pokud je
PublishReadyToRunnastaveno na hodnotu True ve vašem souboru projektu pro ladicí profil.
- Oříznutí je povoleno pro váš projekt. Například není podporováno, pokud je
Další podrobnosti najdete v tématu Nepodporované scénáře.
Opětovné načítání za provozu není podporováno pro F#
Opětovné načítání za provozu, nebo možnost Upravit a Pokračovat, se při ladění kódu v jazyce F# nepodporuje. Úpravy kódu v jazyce F# jsou možné během ladicí relace, ale doporučuje se jim vyhnout. Změny kódu se během ladění nepoužijí. Všechny úpravy provedené v kódu F# při ladění proto budou mít za následek zdrojový kód, který neodpovídá laděného kódu.
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 Konfigurovat úpravy a pokračovat.
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 funguje.
Pokud v dialogovém okně vyberete možnost Always rebuilds, když se změny nedají použít, dialogové okno se znovu nezobrazí v aktuální relaci Visual Studio a Visual Studio se místo zobrazení dialogového okna automaticky znovu sestaví a znovu načte.
Řešení problémů
Pokud Opětovné načítání za provozu nefunguje podle očekávání, zkontrolujte následující:
- Ověřte, že používáte podporovanou aplikaci a scénář. Některé typy projektů, ladění v kombinovaném režimu, optimalizovaný kód a Attach to Process scénáře nepodporují Opětovné načítání za provozu. Další informace najdete v tématu Nepodporované scénáře.
- Ujistěte se, že aplikace používá konfiguraci
Debuga že Opětovné načítání za provozu je povolen v Tools>Možnosti>Debugging>.NET/C++ Opětovné načítání za provozu. - Nastavte Podrobnosti protokolování na Detailed nebo Diagnostic a získejte další informace ve výstupu Opětovné načítání za provozu.
- Otevřete okno Output a v poli Zobrazit výstup z vyberte Opětovné načítání za provozu pro kontrolu diagnostických zpráv.
- Pokud se při ladění zobrazí řádek jen pro čtení, může se jednat o aktivní příkaz v zásobníku volání nebo úpravy můžou vyžadovat restartování.
Seznam běžných diagnostických zpráv najdete v tématu Opětovné načítání za provozu a chybové zprávy Upravit a Pokračovat. Pokud problém přetrvává a výstup nezobrazuje jasnou příčinu, použijte k odeslání názoru týmu Visual Studio Report a Problem.
Pokud používáte kompresi odpovědí na .NET Core, přečtěte si informace o kompresi response.