Podpora okamžitého načítání za běhu .NET pro ASP.NET Core

.NET Opětovné načítání za provozu aplikuje změny kódu, včetně změn stylů, na běžící aplikaci, aniž by bylo nutné ji restartovat a bez ztráty stavu. Podporuje se Opětovné načítání za provozu pro všechny projekty ASP.NET Core v .NET 6 nebo novějších.

Obecně platí, že se aktualizovaný kód znovu spustí, aby se projevil s následujícími podmínkami:

  • Některá logika spouštění se spouští jenom jednou:
    • Middleware, pokud aktualizace kódu není určena pro delegáta vloženého middlewaru.
    • Nakonfigurované služby.
    • Vytvoření a konfigurace trasy, pokud není aktualizace kódu delegátem obslužné rutiny trasy (například OnInitialized).
  • V Blazor aplikacích architektura aktivuje Razor automatické vykreslení komponenty.
  • V aplikacích MVC a Razor Pages funkce Opětovné načítání za provozu automaticky aktivuje aktualizaci prohlížeče.
  • Odebrání atributu Razorparametru komponenty nezpůsobí, že se komponenta znovu vygeneruje. Aplikace se musí restartovat.

Další informace o podporovaných scénářích najdete v tématu Podporované změny kódu (C# a Visual Basic).

Blazor WebAssembly

Blazor WebAssembly Dynamické načítání podporuje následující změny kódu:

  • Nové typy
  • Vnořené třídy.
  • Většinu změn v těle metody tvoří přidání, odebrání a úprava proměnných, výrazů a příkazů.
  • Změny v těle výrazů lambda a místních funkcí.
  • Přidání statických metod a metod instancí do existujících typů
  • Přidání statických polí, událostí a vlastností do existujících typů
  • Přidání statických lambda do existujících metod
  • Přidání lambda funkcí, které zachycují this k existujícím metodám, které již dříve zachytily this.

Všimněte si, že když je atribut odebrán, který dříve nastavil hodnotu parametru komponenty, komponenta je uvolněna a znovu inicializována tak, aby odebraný parametr nastavil zpět na výchozí hodnotu.

Pro následující aplikace Blazor WebAssembly nejsou podporovány změny kódu:

Blazor WebAssembly Dynamické načítání podporuje následující změny kódu:

  • Nové typy
  • Vnořené třídy.
  • Většinu změn v těle metody tvoří přidání, odebrání a úprava proměnných, výrazů a příkazů.
  • Změny v těle výrazů lambda a místních funkcí.
  • Přidání statických metod a metod instancí do existujících typů
  • Přidání statických polí k existujícím typům
  • Přidání statických lambda do existujících metod
  • Přidání lambda funkcí, které zachycují this k existujícím metodám, které již dříve zachytily this.

Všimněte si, že když je atribut odebrán, který dříve nastavil hodnotu parametru komponenty, komponenta je uvolněna a znovu inicializována tak, aby odebraný parametr nastavil zpět na výchozí hodnotu.

Pro následující aplikace Blazor WebAssembly nejsou podporovány změny kódu:

Blazor WebAssembly Dynamické načítání podporuje následující změny kódu:

Pro následující aplikace Blazor WebAssembly nejsou podporovány změny kódu:

  • Přidání nových lambda funkcí nebo místních funkcí
  • Přidání nového await operátoru nebo yield výrazu klíčového slova
  • Změna názvů parametrů metody
  • Změny mimo těla metody.
  • Přidání instančních (ne-static) polí, událostí nebo vlastností.

.NET CLI

Opětovné načítání za provozu se aktivuje pomocí dotnet watch příkazem.

dotnet watch

Pokud chcete vynutit opětovné sestavení a restartování aplikace, použijte kombinaci kláves Ctrl+R v příkazovém prostředí.

Když se provede nepodporovaná úprava kódu označovaná jako hrubá úprava, zobrazí se dotaz, dotnet watch jestli chcete aplikaci restartovat:

  • Ano: Restartuje aplikaci.
  • Ne: Nerestartuje aplikaci a ponechá ji spuštěnou bez použitých změn.
  • Vždy: Restartuje aplikaci podle potřeby, když dojde k hrubým úpravám.
  • Nikdy: Nerestartuje aplikaci a vyhne se budoucím výzvám.

Pokud chcete zakázat podporu Opětovné načítání za provozu, předejte možnost --no-hot-reload příkazu dotnet watch.

dotnet watch --no-hot-reload

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

Následující nastavení v Properties/launchSettings.json zakáže rychlé načítání:

"hotReloadEnabled" : false

WebAssembly Opětovné načítání za provozu (WasmEnableHotReload)

V .NET 10 a novějších určuje vlastnost MSBuild WasmEnableHotReload, zda je infrastruktura Opětovné načítání za provozu zahrnuta ve výstupu sestavení pro aplikace .NET WebAssembly, včetně aplikací Blazor WebAssembly i projektů aplikace pro prohlížeč bez Blazor WebAssembly (šablona wasmbrowser). Vlastnost je pro konfiguraci Debug ve výchozím nastavení nastavena na true.

Nastavení vlastnosti na false odstraní závislosti funkce Opětovné načítání za provozu z výstupu dotnet build, což je užitečné při vytváření artefaktů kompatibilních s nástroji pro bundlování, například pro použití s nástroji webpack nebo Vite.

Pokud chcete zakázat Opětovné načítání za provozu pro aplikace WebAssembly, nastavte vlastnost do false souboru projektu aplikace (.csproj):

<PropertyGroup>
  <WasmEnableHotReload>false</WasmEnableHotReload>
</PropertyGroup>

Pokud chcete povolit Opětovné načítání za provozu pro vlastní (ne)Debugkonfiguraci, nastavte vlastnost natrue:

<PropertyGroup>
  <WasmEnableHotReload>true</WasmEnableHotReload>
</PropertyGroup>

Další informace o řízení Opětovné načítání za provozu v aplikacích najdete v Blazor WebAssembly tématu Ladění ASP.NET Core Blazor aplikací.

Dodatečné zdroje

Další informace najdete v následující části dokumentace k sadě Visual Studio: