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.
Tento článek se vztahuje na: ✔️ .NET 6 SDK a novější verze
Název
dotnet watch - Restartuje nebo znovu načte za provozu zadanou aplikaci nebo spustí zadaný příkaz dotnet při zjištění změn ve zdrojovém kódu.
Přehled
dotnet watch [<command>]
[--artifacts-path <ARTIFACTS_DIR>] [--disable-build-servers]
[--list] [--no-hot-reload] [--no-self-contained]
[--non-interactive] [--project <PROJECT>] [--sc|--self-contained]
[-q|--quiet] [-v|--verbose] [--version]
[--] <forwarded arguments>
dotnet watch -?|-h|--help
Description
Příkaz dotnet watch je sledovací proces souboru. Když zjistí změnu, spustí dotnet run příkaz nebo zadaný dotnet příkaz. Pokud se spustí dotnet runa změna se podporuje pro opětovné načítání za provozu, znovu načte za provozu za provozu zadanou aplikaci. Pokud tato změna není podporovaná, restartuje aplikaci. Tento proces umožňuje rychlý iterativní vývoj z příkazového řádku.
Při spuštění dotnet watchmůžete vynutit opětovné sestavení a restartování aplikace stisknutím 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 sleduje soubory a v případě aktualizace souboru aplikaci restartuje.
Komprese datových odpovědí
Pokud dotnet watch se spustí pro aplikaci, která používá kompresi odpovědí, nástroj nemůže vložit skript aktualizace prohlížeče. V rozhraní .NET 7 a novější verzi nástroje se zobrazí zpráva s upozorněním, jako je následující:
upozornění: Microsoft.AspNetCore.Watch.BrowserRefresh.BrowserRefreshMiddleware[4]
V odpovědi nelze nakonfigurovat injektáž skriptu aktualizace prohlížeče. Příčinou může být kódování obsahu odpovědi: br. Zvažte zakázání komprese odpovědí.
Jako alternativu k zakázání komprese odpovědí přidejte ručně odkaz na javascriptovou aktualizaci prohlížeče na stránky aplikace:
@if (Environment.GetEnvironmentVariable("__ASPNETCORE_BROWSER_TOOLS") is not null)
{
<script src="/_framework/aspnetcore-browser-refresh.js"></script>
}
Arguments
<command>V sadě .NET 7 SDK a starších verzích můžete spustit libovolný příkaz,
dotnet watchkterý je odeslán prostřednictvím spustitelnéhodotnetsouboru, například předdefinovaných příkazů rozhraní příkazového řádku a globálních nástrojů. Pokud můžete spustitdotnet <command>, můžete spustitdotnet watch <command>.V sadě .NET 8 SDK a novějších
dotnet watchmůže běžetdotnet rundotnet build, nebodotnet test. Zadejterun,buildnebotestpro<command>.Pokud není zadaný podřízený příkaz, je
runvýchozí hodnota .dotnet run<forwarded arguments>Argumenty zadané po dvojité pomlce (
--) jsou předány podřízenéhodotnetprocesu. Pokud používátedotnet watch run, jsou tyto argumenty možnostmi spuštění dotnet. Pokud používátedotnet watch test, jsou tyto argumenty možnostmi testu dotnet.
Možnosti
-
--artifacts-path <ARTIFACTS_DIR>Všechny výstupní soubory sestavení ze spuštěného příkazu budou v podsložkách pod zadanou cestou oddělenou projektem. Další informace naleznete v tématu Rozložení výstupu artefaktů. K dispozici od sady .NET 8 SDK.
-
--disable-build-serversVynutí příkaz ignorovat všechny trvalé buildové servery. Tato možnost poskytuje konzistentní způsob, jak zakázat veškeré použití ukládání sestavení do mezipaměti, což vynutí sestavení úplně od začátku. Sestavení, které nespoléhá na mezipaměti, je užitečné, když jsou mezipaměti z nějakého důvodu poškozené nebo nesprávné. K dispozici od sady .NET 7 SDK.
--listZobrazí seznam všech zjištěných souborů bez spuštění sledovacího modulu.
-
--no-self-containedPublikujte aplikaci jako aplikaci závislou na rozhraní. Aby bylo možné spustit aplikaci, musí být na cílovém počítači nainstalovaný kompatibilní modul runtime .NET.
--no-hot-reloadPotlačit opětovné načítání za provozu pro podporované aplikace.
--non-interactiveSpouští
dotnet watchse 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. K dispozici od sady .NET 7 SDK.--project <PATH>Určuje cestu ke spuštění souboru projektu (pouze složka nebo včetně názvu souboru projektu). Pokud není zadaný, nastaví se jako výchozí aktuální adresář.
-
--sc|--self-containedPublikujte modul runtime .NET s vaší aplikací, aby se modul runtime nemusel instalovat na cílový počítač.
-q|--quietPotlačí veškerý výstup vygenerovaný příkazem
dotnet watchs výjimkou upozornění a chyb. Možnost není předána podřízeným příkazům. Například výstup zdotnet restorevýstupu adotnet runbude i nadále výstupem.-v|--verboseZobrazuje podrobný výstup pro ladění.
--versionZobrazuje verzi souboru
dotnet watch.--Možnost dvojité čárky (--) se dá použít k oddělení
dotnet watchmožností od argumentů, které se předají podřízenému procesu. Jeho použití je volitelné. Pokud se možnost dvojité čárky nepoužívá,dotnet watchpovažuje první nerozpoznaný argument za začátek argumentů, který by měl předat do podřízenéhodotnetprocesu.-
-?|-h|--helpVytiskne popis použití příkazu.
Proměnné prostředí
dotnet watch používá následující proměnné prostředí:
DOTNET_HOTRELOAD_NAMEDPIPE_NAMETato hodnota se konfiguruje
dotnet watchpři spuštění aplikace a určuje pojmenovaný kanál.DOTNET_USE_POLLING_FILE_WATCHERPokud je nastavena
1hodnota nebotrue,dotnet watchpoužívá sledovací proces souboru dotazování místo System.IO.FileSystemWatcher. U některých systémů souborů, jako jsou síťové sdílené složky, připojené svazky Dockeru a jiné virtuální systémy souborů, se vyžaduje dotazování. Třída PhysicalFileProvider používáDOTNET_USE_POLLING_FILE_WATCHERk určení, zda PhysicalFileProvider.Watch metoda bude spoléhat na PollingFileChangeToken.DOTNET_WATCHdotnet watchnastaví tuto proměnnou na1všechny podřízené procesy, které spustí.DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAMEdotnet watchMechanismus serveru aktualizace prohlížeče tuto hodnotu přečte, aby určil hostitelské prostředí WebSocket. Hodnota127.0.0.1se nahrazujelocalhosta schématahttp://https://jsou nahrazenaws://awss://v uvedeném pořadí.DOTNET_WATCH_ITERATIONdotnet watchNastaví tuto proměnnou1na a zvýší o jednu po každé změně souboru a příkaz restartuje nebo znovu načte aplikaci za provozu.DOTNET_WATCH_SUPPRESS_BROWSER_REFRESHPokud je nastavená
1hodnota nebotrue,dotnet watchneaktualizuje prohlížeče, když zjistí změny souboru.DOTNET_WATCH_SUPPRESS_EMOJISSe sadou .NET SDK 6.0.300 a novější
dotnet watchgenerují do konzoly znaky jiné 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 tyto znaky můžou zobrazovat zkomoleně. Chcete-li se vyhnout zobrazení zkomolených znaků, nastavte tuto proměnnou na
1hodnotu nebotrue.DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSERPokud je tato možnost nastavená
1na hodnotu nebotrue,dotnet watchnespustí nebo neaktualizuje prohlížeče pro webové aplikace, které jsoulaunchBrowsernakonfigurované v launchSettings.json.DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISMVe 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á na1hodnotu nebotrue, tyto optimalizace jsou zakázány.DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLINGPokud je nastavená hodnota
1nebotrue,dotnet watchneudělá zvláštní zpracování souborů statického obsahu.dotnet watchnastaví vlastnostDotNetWatchContentFilesMSBuild nafalsehodnotu .DOTNET_WATCH_RESTART_ON_RUDE_EDITPokud je nastavená hodnota
1nebotrue,dotnet watchvždy se restartuje při hrubých úpravách, a nemusíte se ptát.
Soubory, které 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í zahrnuje tato skupina všechny položky v dané skupině Compile a EmbeddedResource skupiny.
dotnet watch také zkontroluje celý graf odkazů na projekt a sleduje všechny soubory v rámci těchto projektů.
Ve výchozím nastavení obsahují všechny Compile soubory odpovídající EmbeddedResource následujícím vzorům globu:
**/*.cs*.csproj**/*.resx- Soubory obsahu ve webových aplikacích:
wwwroot/**
Ve výchozím nastavení .configa .json soubory neaktivují restartování dotnet watch, protože konfigurační systém má vlastní mechanismy pro zpracování změn konfigurace.
Soubory lze přidat do seznamu kukátek nebo je ze seznamu odebrat ú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 projektu, 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>
Rozšířená konfigurace
dotnet watch provede sestavení v době návrhu a vyhledá položky, které se mají sledovat. Při spuštění tohoto sestavení nastaví dotnet watch 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
Počínaje sadou .NET 6 SDK dotnet watch zahrnuje podporu opětovného načítání za provozu. Opětovné načítání za provozu je funkce, která umožňuje použít změny spuštěné aplikace, aniž byste ji museli znovu sestavit a restartovat. 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.
Rudé úpravy
Při změně souboru určuje, dotnet watch jestli se aplikace může znovu načíst za provozu. Pokud nejde znovu načíst za provozu, 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ž nebude zobrazovat výzvu k hrubým úpravám.
Informace o tom, jaké druhy změn jsou považovány za hrubé úpravy, naleznete v tématu Upravit kód a pokračovat v ladění a nepodporované 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
Examples
Spusťte
dotnet runprojekt v aktuálním adresáři pokaždé, když se změní zdrojový kód:dotnet watchNebo:
dotnet watch runSpusťte
dotnet testprojekt v aktuálním adresáři pokaždé, když se změní zdrojový kód:dotnet watch testSpusťte
dotnet run --project ./HelloWorld.csprojpokaždé, když se změní zdrojový kód:dotnet watch run --project ./HelloWorld.csprojSpusťte
dotnet run -- arg0projekt v aktuálním adresáři pokaždé, když se změní zdrojový kód:dotnet watch run -- arg0Nebo:
dotnet watch -- run arg0
Viz také
- Kurz: Vývoj aplikací ASP.NET Core pomocí sledovacího nástroje pro soubory
- Opětovné načítání za provozu v sadě Visual Studio
- Opětovné načítání podporovaných aplikací za provozu
- Změny podporovaného kódu za provozu
- Spuštění testu opětovného načítání za provozu
- Podpora opětovného načítání za provozu pro ASP.NET Core