dotnet watch
Ez a cikk a következő verziókra vonatkozik: ✔️ .NET Core 3.1 SDK és újabb verziók
Name
dotnet watch
– Újraindítja vagy újra betölti a megadott alkalmazást, vagy futtat egy megadott dotnet-parancsot a forráskód változásainak észlelésekor.
Áttekintés
dotnet watch [<command>]
[--list]
[--no-hot-reload] [--non-interactive]
[--project <PROJECT>]
[-q|--quiet] [-v|--verbose]
[--version]
[--] <forwarded arguments>
dotnet watch -?|-h|--help
Description
A dotnet watch
parancs egy fájlfigyelő. Ha módosítást észlel, futtatja a dotnet run
parancsot vagy egy megadott dotnet
parancsot. Ha futtatja dotnet run
a ,-t, és a módosítás támogatott a gyakori elérésű újratöltéshez, a rendszer újra betölti a megadott alkalmazást. Ha a módosítás nem támogatott, újraindítja az alkalmazást. Ez a folyamat gyors iteratív fejlesztést tesz lehetővé a parancssorból.
A futtatás dotnet watch
során kényszerítheti az alkalmazást az újraépítésre és az újraindításra, ha lenyomja a Ctrl+R billentyűkombinációt a parancshéjban. Ez a funkció csak akkor érhető el, ha az alkalmazás fut. Ha például egy olyan konzolalkalmazáson fut dotnet watch
, amely a Ctrl+R billentyűkombináció lenyomása előtt ér véget, a Ctrl+R billentyűkombinációnak nincs hatása. Ebben az esetben dotnet watch
azonban továbbra is figyeli a fájlokat, és egy fájl frissítésekor újraindítja az alkalmazást.
Választömörítés
Ha dotnet watch
választömörítést használó alkalmazáshoz fut, az eszköz nem tudja beadni a böngészőfrissítési szkriptet. Az eszköz .NET 7-es és újabb verziója az alábbihoz hasonló figyelmeztető üzenetet jelenít meg:
warn: Microsoft.AspNetCore.Watch.BrowserRefresh.BrowserRefreshMiddleware[4]
Nem lehet konfigurálni a böngésző frissítési szkriptjének injektálását a válaszon. Ezt a válasz Tartalomkódolása okozhatta: "br". Fontolja meg a választömörítés letiltását.
A választömörítés letiltása helyett manuálisan adja hozzá a böngésző frissítési JavaScript-hivatkozását az alkalmazás lapjaihoz:
@if (Environment.GetEnvironmentVariable("__ASPNETCORE_BROWSER_TOOLS") is not null)
{
<script src="/_framework/aspnetcore-browser-refresh.js"></script>
}
Argumentumok
command
dotnet watch
a futtatható parancsok, például a beépített PARANCSSOR-parancsok és adotnet
globális eszközök segítségével bármilyen parancsot futtathat. Ha futtathatódotnet <command>
, futtathatja a parancsotdotnet watch <command>
. Ha a gyermekparancs nincs megadva, az alapértelmezett érték a következődotnet run
:run
.forwarded arguments
A két kötőjel (
--
) után megadott argumentumok átadódnak a gyermekfolyamatnakdotnet
. Ha futdotnet watch run
, ezek az argumentumok a dotnet futtatásának lehetőségei. Ha futdotnet watch test
, ezek az argumentumok a dotnet-teszt beállításai.
Beállítások
--list
Az összes felderített fájl listázása a figyelő indítása nélkül.
--no-hot-reload
A támogatott alkalmazásokgyakori újratöltésének mellőzése.
--non-interactive
Nem interaktív módban fut
dotnet watch
. Ezzel a beállítással megakadályozhatja a konzol bemenetének kérését. Ha a gyakori elérésű újratöltés engedélyezve van, és durva szerkesztést észlel, a dotnet watch újraindítja az alkalmazást. A .NET 7 SDK óta érhető el.--project <PATH>
Megadja a futtatni kívánt projektfájl elérési útját (csak mappa, vagy a projektfájl nevét is beleértve). Ha nincs megadva, az alapértelmezés szerint az aktuális könyvtárra lesz bekapcsolva.
-q|--quiet
Letiltja a parancs által generált összes kimenetet, kivéve a
dotnet watch
figyelmeztetéseket és a hibákat. A beállítás nem lesz átadva a gyermekparancsok számára. A kimenet például a következőbőldotnet restore
származik, ésdotnet run
továbbra is kimenet marad.-v|--verbose
Részletes kimenetet jelenít meg a hibakereséshez.
--version
A verziójának
dotnet watch
megjelenítése.--
A kétkötőjeles beállítás ('--') segítségével elválaszthatja
dotnet watch
a beállításokat a gyermekfolyamatnak átadott argumentumoktól. Használata nem kötelező. Ha nem használja a kétkötőjeles beállítást, az első ismeretlen argumentumot az argumentumok elejének tekinti,dotnet watch
amelyeket át kell adnia a gyermekfolyamatbadotnet
.
Környezeti változók
dotnet watch
a következő környezeti változókat használja:
DOTNET_HOTRELOAD_NAMEDPIPE_NAME
Ezt az értéket az alkalmazás elindításakor konfigurálja
dotnet watch
, és megadja a megnevezett csövet.DOTNET_USE_POLLING_FILE_WATCHER
Ha a vagy értékre van
1
állítva,dotnet watch
a helyett egy lekérdezési fájlfigyelőt System.IO.FileSystemWatcherhasznál.true
Egyes fájlrendszerekhez, például a hálózati megosztásokhoz, a Dockerhez csatlakoztatott kötetekhez és más virtuális fájlrendszerekhez lekérdezésre van szükség. Az PhysicalFileProvider osztály aztDOTNET_USE_POLLING_FILE_WATCHER
határozza meg, hogy a PhysicalFileProvider.Watch metódus a PollingFileChangeTokenfüggvényre támaszkodik-e.DOTNET_WATCH
dotnet watch
beállítja ezt a változót1
az összes olyan gyermekfolyamaton, amelyet elindít.DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME
Ennek részeként a böngészőfrissítési
dotnet watch
kiszolgáló mechanizmusa beolvassa ezt az értéket a WebSocket gazdagépkörnyezetének meghatározásához. Az érték127.0.0.1
helyébe a , és a éshttps://
ahttp://
sémák lépnekws://
wss://
.localhost
DOTNET_WATCH_ITERATION
dotnet watch
ezt a változót1
egy-egy fájl módosításakor és a parancs újraindításakor vagy gyorstöltéskor egyenkénti növekményesre állítja.DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH
Ha a vagy
true
értékre1
van állítva,dotnet watch
nem frissíti a böngészőket, amikor fájlmódosításokat észlel.DOTNET_WATCH_SUPPRESS_EMOJIS
A .NET SDK 6.0.300-as és újabb
dotnet watch
verziójával nem ASCII-karaktereket bocsát ki a konzolra, ahogy az alábbi példában látható: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...
Egyes konzol gazdagépeken ezek a karakterek eltűnve jelenhetnek meg. Ha el szeretné kerülni a felesleges karaktereket, állítsa ezt a változót a vagy
true
értékre1
.DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER
Ha a vagy
true
értékre1
van állítva,dotnet watch
nem indítja el vagy frissíti a böngészőket a launchSettings.json fájlban konfigurált webalkalmazásokhozlaunchBrowser
.DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISM
Alapértelmezés szerint
dotnet watch
optimalizálja a buildet bizonyos műveletek elkerülésével, például a visszaállítás futtatásával vagy a figyelt fájlok újraértékelésével minden fájlmódosításkor. Ha ez a változó a vagytrue
értékre1
van állítva, ezek az optimalizálások le lesznek tiltva.DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING
Ha a vagy
true
értékre1
van állítva,dotnet watch
a statikus tartalomfájlok esetében nem végez speciális kezelést.dotnet watch
az MSBuild tulajdonságotDotNetWatchContentFiles
a értékrefalse
állítja.DOTNET_WATCH_RESTART_ON_RUDE_EDIT
Ha a vagy
true
értékre1
van állítva,dotnet watch
a kérés helyett mindig durva szerkesztésekkel újraindul.
Alapértelmezés szerint megtekintett fájlok
dotnet watch
A projektfájlban az Watch
elemcsoport összes elemét figyeli. Alapértelmezés szerint ez a csoport tartalmazza a és EmbeddedResource
a csoport összes elemétCompile
. dotnet watch
emellett megvizsgálja a projekthivatkozások teljes grafikonját, és az adott projekteken belüli összes fájlt figyeli.
Alapértelmezés szerint a és EmbeddedResource
a Compile
csoport tartalmazza az összes olyan fájlt, amely megfelel az alábbi glob-mintáknak:
**/*.cs
*.csproj
**/*.resx
- Tartalomfájlok webalkalmazásokban:
wwwroot/**
Alapértelmezés szerint .configés .json fájlok nem aktiválják a dotnetet watch újraindítását, mert a konfigurációs rendszer saját mechanizmusokkal rendelkezik a konfigurációs módosítások kezeléséhez.
A projektfájl szerkesztésével fájlokat adhat hozzá a watch listához, vagy eltávolíthatja őket a listából. A fájlok egyedileg vagy glob-mintákkal adhatók meg.
További fájlok megtekintése
További fájlok tekinthetők meg, ha elemeket ad hozzá a Watch
csoporthoz. A következő korrektúra például kiterjeszti a csoportot a JavaScript-fájlokra:
<ItemGroup>
<Watch Include="**\*.js" Exclude="node_modules\**\*;**\*.js.map;obj\**\*;bin\**\*" />
</ItemGroup>
Megadott fájlok figyelmen kívül hagyása
dotnet watch
a következő példában látható módon figyelmen kívül hagyja Compile
az EmbeddedResource
Watch="false"
attribútummal rendelkező elemeket:
<ItemGroup>
<Compile Update="Generated.cs" Watch="false" />
<EmbeddedResource Update="Strings.resx" Watch="false" />
</ItemGroup>
dotnet watch
figyelmen kívül hagyja az Watch="false"
attribútummal rendelkező projekthivatkozásokat az alábbi példában látható módon:
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" Watch="false" />
</ItemGroup>
Speciális konfiguráció
dotnet watch
tervezési idejű buildet hajt végre, hogy megkeresse a watch elemeket. A build futtatásakor dotnet watch
beállítja a tulajdonságot DotNetWatchBuild=true
. Ez a tulajdonság az alábbi példában látható módon használható:
<ItemGroup Condition="'$(DotNetWatchBuild)'=='true'">
<!-- only included in the project when dotnet-watch is running -->
</ItemGroup>
Gyakori elérésű újratöltés
A .NET 6-tól dotnet watch
kezdve a gyakori elérésű újratöltés támogatása is támogatott. A gyakori elérésű újratöltés egy olyan funkció, amellyel módosításokat alkalmazhat egy futó alkalmazásra anélkül, hogy újra kellene építenie és újra kellene indítania. A módosítások lehetnek kódfájlok vagy statikus objektumok, például stíluslapfájlok és JavaScript-fájlok. Ez a funkció leegyszerűsíti a helyi fejlesztési élményt, mivel azonnali visszajelzést ad az alkalmazás módosításakor.
A gyakori elérésű újratöltést támogató alkalmazástípusokról és .NET-verziókról további információt a Támogatott .NET-alkalmazás-keretrendszerek és -forgatókönyvek című témakörben talál.
Durva módosítások
Ha módosít egy fájlt, meghatározza, dotnet watch
hogy az alkalmazás betölthető-e újra. Ha nem tölthető be újra a gyorstöltés, a módosítást durva szerkesztésnek nevezzük, és dotnet watch
megkérdezi, hogy újraindítja-e az alkalmazást:
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)?
- Igen: Újraindítja az alkalmazást.
- Nem: A módosítások alkalmazása nélkül hagyja futni az alkalmazást.
- Mindig: Újraindítja az alkalmazást, és többé nem kér durva módosításokat.
- Soha: A módosítások alkalmazása nélkül hagyja futni az alkalmazást, és többé nem kér durva módosításokat.
További információ arról, hogy milyen típusú módosítások minősülnek durva szerkesztésnek, lásd: Kód szerkesztése és a kód nem támogatott módosításainak hibakeresése és nem támogatott módosításainak folytatása.
Ha le szeretné tiltani a gyakori elérésű újrabetöltést a futtatásakor dotnet watch
, használja a --no-hot-reload
lehetőséget az alábbi példában látható módon:
dotnet watch --no-hot-reload
Példák
Futtassa
dotnet run
az parancsot a projekthez az aktuális könyvtárban, amikor a forráskód megváltozik:dotnet watch
Vagy:
dotnet watch run
Futtassa
dotnet test
az parancsot a projekthez az aktuális könyvtárban, amikor a forráskód megváltozik:dotnet watch test
Futtassa a parancsot
dotnet run --project ./HelloWorld.csproj
, amikor a forráskód megváltozik:dotnet watch run --project ./HelloWorld.csproj
Futtassa
dotnet run -- arg0
az parancsot a projekthez az aktuális könyvtárban, amikor a forráskód megváltozik:dotnet watch run -- arg0
Vagy:
dotnet watch -- run arg0
Lásd még
- Oktatóanyag: ASP.NET Core-alkalmazások fejlesztése fájlfigyelő használatával
- Gyakori elérésű újrabetöltés a Visual Studióban
- Támogatott alkalmazások gyakori elérésű újrabetöltése
- Gyakori elérésű újratöltés támogatott kódmódosítások
- Gyakori elérésű újratöltési teszt végrehajtása
- Gyakori elérésű újratöltés támogatása ASP.NET Core
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: