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 watch
můž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 nebotest
s možnostmi pro dotnet test. Pokud podřízený příkaz není zadaný, jerun
výchozí hodnota prodotnet 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 zdotnet restore
adotnet 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éhodotnet
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
1
true
,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 na1
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 watch
prostředí WebSocket. Hodnota127.0.0.1
je nahrazenalocalhost
a schématahttp://
https://
jsou nahrazenaws://
awss://
v uvedeném pořadí.DOTNET_WATCH_ITERATION
dotnet watch
nastaví tuto proměnnou na a zvýší o1
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
nebotrue
,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
nebotrue
.DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER
Pokud je nastavená hodnota
1
nebotrue
,dotnet watch
nespustí nebo aktualizuje prohlížeče pro webové aplikace, které jsoulaunchBrowser
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á nebo1
true
, jsou tyto optimalizace zakázané.DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING
Pokud je nastavená hodnota
1
nebotrue
,dotnet watch
neudělá zvláštní zpracování souborů statického obsahu.dotnet watch
nastaví vlastnost MSBuildDotNetWatchContentFiles
nafalse
.
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