dotnet watch

Tento článek se vztahuje na: ✔️ .NET Core 3.1 SDK a novější verze

Název

dotnet watch – Restartuje nebo znovu načte zadanou aplikaci při zjištění změn ve zdrojovém kódu.

Synopse

dotnet watch [--list]
  [--no-hot-reload] [--non-interactive]
  [--project <PROJECT>]
  [-q|--quiet] [-v|--verbose]
  [--version]
  [--] <forwarded arguments> 

dotnet watch -?|-h|--help

Description

Příkaz dotnet watch je sledovací proces souboru. Když zjistí změnu podporovanou pro opětovné načítání za provozu, znovu načte za provozu zatěžování za provozu za provozu. Když zjistí nepodporovanou změnu, restartuje aplikaci. Tento proces umožňuje rychlý iterativní vývoj z příkazového řádku.

Při spuštění dotnet watchmůžete aplikaci vynutit opětovné sestavení a restartování stisknutím kombinace kláves Ctrl+R v příkazovém prostředí. Tato funkce je dostupná jenom v době, kdy je aplikace spuštěná. Pokud například spustíte dotnet watch konzolovou aplikaci, která končí před stisknutím kombinace kláves Ctrl+R, stisknutí kombinace kláves Ctrl+R nemá žádný vliv. V takovém případě dotnet watch ale stále sledujete soubory a v případě aktualizace souboru aplikaci restartuje.

Argumenty

  • forwarded arguments

    Argumenty pro předání podřízeného dotnet procesu Například: run s možnostmi spuštění dotnet nebo test s možnostmi pro dotnet test. Pokud podřízený příkaz není zadaný, je run výchozí hodnota pro dotnet run.

Možnosti

  • --list

    Zobrazí seznam všech zjištěných souborů bez spuštění sledovacího modulu.

  • --no-hot-reload

    Potlačení opětovného načítání za provozu pro podporované aplikace

  • --non-interactive

    Běží dotnet watch v neinteraktivním režimu. Tuto možnost použijte, pokud chcete zabránit vyžádání vstupu konzoly. Když je povolené opětovné načítání za provozu a zjistí se hrubá úprava , dotnet watch restartuje aplikaci.

  • --project <PATH>

    Určuje cestu ke spuštění souboru projektu (pouze složka nebo zahrnutí názvu souboru projektu). Pokud není zadaný, výchozí hodnota je aktuální adresář.

  • -q|--quiet

    Potlačí veškerý výstup vygenerovaný příkazem dotnet watch s výjimkou upozornění a chyb. Možnost se nepředá podřízeným příkazům. Například výstup z dotnet restore a dotnet run nadále je výstup.

  • -v|--verbose

    Zobrazuje podrobný výstup pro ladění.

  • --version

    Zobrazuje verzi .dotnet watch

  • --

    Možnost dvojitého přerušování (---) lze použít k oddělovači dotnet watch možností od argumentů, které se předají podřízenému procesu. Jeho použití je volitelné. Pokud není použita možnost dvojité čárky, dotnet watch považuje první nerozpoznaný argument jako začátek argumentů, který by měl předat do podřízeného dotnet procesu.

Proměnné prostředí

dotnet watch používá následující proměnné prostředí:

  • DOTNET_HOTRELOAD_NAMEDPIPE_NAME

    Tato hodnota se nakonfiguruje dotnet watch , když se má aplikace spustit, a určuje pojmenovaný kanál.

  • DOTNET_USE_POLLING_FILE_WATCHER

    Pokud je nastavena nebo 1true, dotnet watch používá místo toho sledovací nástroj System.IO.FileSystemWatcherpro dotazování souboru . Dotazování se vyžaduje pro některé systémy souborů, jako jsou sdílené síťové složky, připojené svazky Dockeru a jiné virtuální systémy souborů. Třída PhysicalFileProvider používá DOTNET_USE_POLLING_FILE_WATCHER k určení, zda PhysicalFileProvider.Watch metoda bude spoléhat na PollingFileChangeToken.

  • DOTNET_WATCH

    dotnet watch nastaví tuto proměnnou na 1 všechny podřízené procesy, které spustí.

  • DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME

    V rámci mechanismu serveru aktualizace prohlížeče přečte tuto hodnotu k určení hostitelského dotnet watchprostředí WebSocket. Hodnota 127.0.0.1 je nahrazena localhosta schémata http://https:// jsou nahrazena ws:// a wss:// v uvedeném pořadí.

  • DOTNET_WATCH_ITERATION

    dotnet watch nastaví tuto proměnnou na a zvýší o 1 jednu po každé změně souboru a příkaz restartuje nebo znovu načte aplikaci za provozu.

  • DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH

    Pokud je nastavená hodnota 1 nebo true, dotnet watch nebude aktualizovat prohlížeče, když zjistí změny souboru.

  • DOTNET_WATCH_SUPPRESS_EMOJIS

    V sadě .NET SDK 6.0.300 a novějších dotnet watch generuje do konzoly jiné znaky než ASCII, jak je znázorněno v následujícím příkladu:

    dotnet watch 🔥 Hot reload enabled. For a list of supported edits, see https://aka.ms/dotnet/hot-reload.
      💡 Press "Ctrl + R" to restart.
    dotnet watch 🔧 Building...
    dotnet watch 🚀 Started
    dotnet watch ⌚ Exited
    dotnet watch ⏳ Waiting for a file to change before restarting dotnet...
    

    U některých hostitelů konzoly se můžou tyto znaky objevit zkomoleně. Chcete-li se vyhnout zobrazování zkomolených znaků, nastavte tuto proměnnou na 1 nebo true.

  • DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER

    Pokud je nastavená hodnota 1 nebo true, dotnet watch nespustí nebo aktualizuje prohlížeče pro webové aplikace, které jsou launchBrowser nakonfigurované ve launchSettings.json.

  • DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISM

    Ve výchozím nastavení optimalizuje sestavení tím, dotnet watch že se vyhnete určitým operacím, například spuštěním obnovení nebo opětovným vyhodnocením sady sledovaných souborů při každé změně souboru. Pokud je tato proměnná nastavená nebo 1true, jsou tyto optimalizace zakázané.

  • DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING

    Pokud je nastavená hodnota 1 nebo true, dotnet watch neudělá zvláštní zpracování souborů statického obsahu. dotnet watchnastaví vlastnost MSBuild DotNetWatchContentFiles na false.

Soubory se ve výchozím nastavení sledují

dotnet watch sleduje všechny položky ve Watch skupině položek v souboru projektu. Ve výchozím nastavení tato skupina zahrnuje všechny položky v těchto skupinách Compile a EmbeddedResource skupinách. dotnet watch také prohledá celý graf odkazů na projekt a sleduje všechny soubory v rámci těchto projektů.

Ve výchozím nastavení Compile zahrnují všechny EmbeddedResource soubory odpovídající následujícím vzorům globu:

  • **/*.cs
  • *.csproj
  • **/*.resx
  • Soubory obsahu ve webových aplikacích: wwwroot/**

Ve výchozím nastavení soubory.configa .json neaktivují restartování dotnet watch, protože konfigurační systém má vlastní mechanismy pro zpracování změn konfigurace.

Soubory je možné přidat do seznamu kukátek nebo odebrat ze seznamu úpravou souboru projektu. Soubory lze zadat jednotlivě nebo pomocí vzorů globu.

Sledování dalších souborů

Další soubory můžete sledovat přidáním položek do Watch skupiny. Například následující kód rozšiřuje tuto skupinu tak, aby zahrnovala soubory JavaScriptu:

<ItemGroup>
  <Watch Include="**\*.js" Exclude="node_modules\**\*;**\*.js.map;obj\**\*;bin\**\*" />
</ItemGroup>

Ignorovat zadané soubory

dotnet watch bude ignorovat Compile a EmbeddedResource položky, které mají Watch="false" atribut, jak je znázorněno v následujícím příkladu:

<ItemGroup>
  <Compile Update="Generated.cs" Watch="false" />
  <EmbeddedResource Update="Strings.resx" Watch="false" />
</ItemGroup>

dotnet watch bude ignorovat odkazy na projekt, které mají Watch="false" atribut, jak je znázorněno v následujícím příkladu:

<ItemGroup>
  <ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" Watch="false" />
</ItemGroup>

Pokročilá konfigurace

dotnet watch provede sestavení v době návrhu, aby bylo možné najít položky, které se mají sledovat. Při spuštění dotnet watch tohoto sestavení nastaví vlastnost DotNetWatchBuild=true. Tuto vlastnost lze použít, jak je znázorněno v následujícím příkladu:

<ItemGroup Condition="'$(DotNetWatchBuild)'=='true'">
  <!-- only included in the project when dotnet-watch is running -->
</ItemGroup>

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

Od verze .NET 6 dotnet watch zahrnuje podporu opětovného načítání za provozu. Opětovné načtení za provozu je funkce, která umožňuje použít změny spuštěné aplikace bez nutnosti opětovného sestavení a restartování. Změny můžou být v souborech kódu nebo statických prostředcích, jako jsou soubory šablon stylů a soubory JavaScriptu. Tato funkce zjednodušuje místní vývojové prostředí, protože poskytuje okamžitou zpětnou vazbu při úpravě aplikace.

Informace o typech aplikací a verzích .NET, které podporují opětovné načítání za provozu, najdete v tématu Podporované architektury a scénáře aplikací .NET.

Rude edits

Při změně souboru určuje, dotnet watch jestli je možné aplikaci znovu načíst za provozu. Pokud se nedá znovu načíst, tato změna se nazývá hrubá úprava a dotnet watch zeptá se, jestli chcete aplikaci restartovat:

dotnet watch ⌚ Unable to apply hot reload because of a rude edit.
  ❔ Do you want to restart your app - Yes (y) / No (n) / Always (a) / Never (v)?
  • Ano: Restartuje aplikaci.
  • Ne: Ponechá aplikaci spuštěnou bez použitých změn.
  • Vždy: Restartuje aplikaci a už se nezobrazí výzva k hrubým úpravám.
  • Nikdy: Ponechá aplikaci spuštěnou bez použitých změn a už se nezobrazí výzva k hrubým úpravám.

Informace o tom, jaké druhy změn jsou považovány za hrubé úpravy, najdete v tématu Upravit kód a pokračovat v ladění anepodporované změny kódu.

Pokud chcete při spuštění zakázat opětovné načítání za provozu dotnet watch, použijte --no-hot-reload tuto možnost, jak je znázorněno v následujícím příkladu:

dotnet watch --no-hot-reload 

Příklady

  • Spusťte dotnet run projekt v aktuálním adresáři při každé změně zdrojového kódu:

    dotnet watch
    

    Nebo:

    dotnet watch run
    
  • Spusťte dotnet test projekt v aktuálním adresáři při každé změně zdrojového kódu:

    dotnet watch test
    
  • Spusťte dotnet run --project ./HelloWorld.csproj vždy, když se změní zdrojový kód:

    dotnet watch run --project  ./HelloWorld.csproj
    
  • Spusťte dotnet run -- arg0 projekt v aktuálním adresáři při každé změně zdrojového kódu:

    dotnet watch run -- arg0
    

    Nebo:

    dotnet watch -- run arg0
    

Viz také