Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A cikk a következőre vonatkozik: ✔️ .NET 6 SDK és újabb verziók
Név
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>]
[--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
A dotnet watch parancs egy fájlfigyelő. Amikor változást észlel, futtatja a dotnet run parancsot vagy egy megadott dotnet parancsot. Ha fut dotnet run, é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.
Futtatás dotnet watchközben kényszerítheti az alkalmazást az újraépítésre és az újraindításra a Ctrl+R billentyűkombináció lenyomásával 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 watchvá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:
figyelmeztetés: 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 okozhatta a válasz content-kódolása: "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>
}
Arguments
<command>A .NET 7 SDK-ban és a korábbi verziókban a
dotnet watchfuttathat minden olyan parancsot, amelyet adotnetfuttatható, például beépített PARANCSSOR-parancsokkal és globális eszközökkel. Ha futtathatódotnet <command>, futtathatja a parancsotdotnet watch <command>.A .NET 8 SDK-ban és újabb verziókban
dotnet watchfuttathatdotnet run,dotnet buildvagydotnet test. Adja megrun,buildvagytesta következőhöz<command>: .Ha a gyermekparancs nincs megadva, az alapértelmezett érték a
runkövetkeződotnet run: .<forwarded arguments>A kettős kötőjel (
--) után megadott argumentumokat a rendszer átadja 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
-
--artifacts-path <ARTIFACTS_DIR>A végrehajtott parancs összes buildkimeneti fájlja a megadott elérési út alatti almappákba kerül, projekt szerint elválasztva. További információ: Artifacts Kimeneti elrendezés. Ezt a lehetőséget és a megadott értéket explicit módon kaszkádoltnak kell lennie minden olyan
dotnetparancsban, amely egy másikdotnetparancs kimenetétől függ, például a használatdotnet build --no-restoreésdotnet publish --no-builda . .NET 8 SDK óta érhető el. -
--disable-build-serversKényszeríti a parancsot az állandó buildkiszolgálók figyelmen kívül hagyására. Ez a beállítás konzisztens módot biztosít a buildek gyorsítótárazásának letiltására, ami az alapoktól kényszeríti a buildeket. A gyorsítótárakra nem támaszkodó buildek akkor hasznosak, ha a gyorsítótárak valamilyen okból sérültek vagy helytelenek. .NET 7 SDK óta érhető el.
--listAz összes felderített fájl listázása a figyelő indítása nélkül.
-
--no-self-containedAz alkalmazás közzététele keretrendszerfüggő alkalmazásként. Az alkalmazás futtatásához telepíteni kell egy kompatibilis .NET futtatókörnyezetet a célgépre.
--no-hot-reloadA támogatott alkalmazásokgyakori újratöltésének letiltása.
--non-interactiveNem interaktív módban fut
dotnet watch. Ezzel a beállítással megakadályozhatja a konzol bemenetének kérését. Ha engedélyezve van a gyakori újratöltés, és durva szerkesztést észlel, a dotnet watch újraindítja az alkalmazást. .NET 7 SDK óta érhető el.--project <PATH>Megadja a futtatandó projektfájl elérési útját (csak mappa vagy a projektfájl nevét is beleértve). Ha nincs megadva, alapértelmezés szerint az aktuális könyvtár lesz.
-
--sc|--self-containedTegye közzé a .NET futtatókörnyezetet az alkalmazással, hogy a futtatókörnyezetet ne kelljen telepíteni a célgépre.
-q|--quietA parancs által generált összes kimenetet letiltja a
dotnet watchfigyelmeztetések és hibák kivételével. A beállítás nem lesz átadva a gyermekparancsok számára. Például a kimenet a kimenetből származikdotnet restore, ésdotnet runtovábbra is kimenet marad.-v|--verboseRészletes kimenetet jelenít meg a hibakereséshez.
--versionA következő verziójának
dotnet watchmegjelenítése: .--A kétkötőjeles beállítás ('--') segítségével elválaszthatja
dotnet watcha 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ő felismeretlen argumentumot az argumentumok elejének tekinti,dotnet watchamelyeket át kell adnia a gyermekfolyamatbadotnet.-
-?|-h|--helpA parancs használatának leírását nyomtatja ki.
Környezeti változók
dotnet watch A következő környezeti változókat használja:
DOTNET_HOTRELOAD_NAMEDPIPE_NAMEEzt az értéket az alkalmazás elindításakor konfigurálja
dotnet watch, és megadja a megnevezett csövet.DOTNET_USE_POLLING_FILE_WATCHERHa be van állítva,
1vagytrueegydotnet watchlekérdezésfájl-figyelőt használ ahelyett, hogy a lekérdezést használnák System.IO.FileSystemWatcher. Egyes fájlrendszerek, például hálózati megosztások, Docker-csatlakoztatott kötetek és más virtuális fájlrendszerek lekérdezése szükséges. Az PhysicalFileProvider osztály annak meghatározására használjaDOTNET_USE_POLLING_FILE_WATCHER, hogy a PhysicalFileProvider.Watch metódus a PollingFileChangeToken.DOTNET_WATCHdotnet watchbeállítja ezt a változót1az összes elindított gyermekfolyamatra.DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAMEEnnek részeként a böngészőfrissítési
dotnet watchkiszolgáló mechanizmusa beolvassa ezt az értéket a WebSocket gazdagépkörnyezetének meghatározásához. Az érték127.0.0.1helyébe az , és alocalhosthttp://sémák lépnek, illetvehttps://azok helyébews://.wss://DOTNET_WATCH_ITERATIONdotnet watchezt a változót1minden fájl módosításakor egy-egy lépésre állítja, és a parancs újraindul vagy újra betölti az alkalmazást.DOTNET_WATCH_SUPPRESS_BROWSER_REFRESHHa be van állítva vagy
1true,dotnet watchnem frissíti a böngészőket, amikor fájlmódosításokat észlel.DOTNET_WATCH_SUPPRESS_EMOJISA .NET SDK 6.0.300-as és újabb verziójával a
dotnet watchnem ASCII-karaktereket bocsát ki a konzolra, ahogyan az a következő 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éphetetlennek tűnhetnek. Ha el szeretné kerülni a felesleges karaktereket, állítsa ezt a változót a következőre
1: vagytrue.DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSERHa be van
1állítva vagytrue,dotnet watchnem indít el vagy frissít böngészőket alaunchBrowserlaunchSettings.json. alkalmazásban konfigurált webalkalmazásokhoz.DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISMAlapértelmezés szerint
dotnet watchoptimalizá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 ismételt kiértékelésével minden fájlmódosításkor. Ha a változó értéke vagy1értéketrue, ezek az optimalizálások le vannak tiltva.DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLINGHa be van
1állítva vagytrue,dotnet watchnem fog speciálisan kezelni a statikus tartalomfájlokat.dotnet watchaz MSBuild tulajdonságotDotNetWatchContentFilesa értékre állítjafalse.DOTNET_WATCH_RESTART_ON_RUDE_EDITHa be van állítva vagy
1true,dotnet watchmindig újraindul a durva szerkesztésekkel ahelyett, hogy megkérdezné.
Alapértelmezés szerint figyelt fájlok
dotnet watch A projektfájl elemcsoportjának összes elemét Watch figyeli. Ez a csoport alapértelmezés szerint a csoport összes elemét CompileEmbeddedResource tartalmazza.
dotnet watch A projekthivatkozások teljes gráfját is megvizsgálja, és a projekteken belüli összes fájlt figyeli.
Alapértelmezés szerint az és Compile a EmbeddedResource csoportok az alábbi gömbmintáknak megfelelő összes fájlt tartalmazzák:
**/*.cs*.csproj**/*.resx- Tartalomfájlok webalkalmazásokban:
wwwroot/**
Alapértelmezés szerint .configés .json fájlok nem indítják el a dotnet 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 fájlok hozzáadhatók a figyelőlistához, vagy eltávolíthatók a listából a projektfájl szerkesztésével. 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 és mappák figyelmen kívül hagyása
Watch="false" Az attribútum használatával figyelmen kívül hagyhatja a megadott fájlokat. A tulajdonság használatával figyelmen kívül hagyhatja a DefaultItemExcludes mappákat vagy fájlokat a figyeléstől.
Ha meg szeretné akadályozni dotnet watch a fájlok megtekintését, használja az Compile attribútumot és EmbeddedResource az Watch="false" elemeket az alábbi példában látható módon:
<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, ahogyan az az alábbi példában is látható:
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" Watch="false" />
</ItemGroup>
A .NET 10-től kezdve a DefaultItemExcludes tulajdonság használatával kizárhatja, hogy a dotnet watch a teljes mappákat vagy fájlmintákat figyelje. Ez a módszer akkor hasznos, ha olyan fájlokat szeretne kizárni, amelyek nem relevánsak a fordításhoz vagy a nemkívánatos újraindításokat vagy újratöltéseket kiváltó fájlokhoz.
Előfordulhat például, hogy a App_Data ASP.NET Core-alkalmazások mappájában lévő fájlok megváltoznak az alkalmazás futtatása közben, ami szükségtelen lapbetöltéseket okoz. Zárja ki ezt a mappát a figyelésből:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/App_Data/**</DefaultItemExcludes>
</PropertyGroup>
Több minta kizárása pontosvesszőkkel elválasztva:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/App_Data/**;**/temp/**;**/*.log</DefaultItemExcludes>
</PropertyGroup>
A DefaultItemExcludes tulajdonság az összes alapértelmezett elemtípusra hatással van, például Compile és EmbeddedResource. Az Watch="false" attribútum finomabb vezérlést biztosít adott fájlok vagy projekthivatkozások felett.
További információ: DefaultItemExcludes referencia.
Speciális konfiguráció
dotnet watch tervezési idejű buildet hajt végre, hogy megkeresse a megtekinteni kívánt 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>
Hot Reload
A .NET 6 SDK-tól kezdve a dotnet watch támogatja a hot újratöltését. A gyakori elérésű újratöltés funkció lehetővé teszi a módosítások alkalmazását egy futó alkalmazáson 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 újratöltést támogató alkalmazástípusokról és .NET verziókról a A támogatott .NET alkalmazás-keretrendszerekről és forgatókönyvekről olvashat.
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 gyakori elérésű fájl, a módosítást durva szerkesztésnek nevezzük, és dotnet watch megkérdezi, hogy újra szeretné-e indítani 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, olvassa el a Kód szerkesztése című témakört, és folytassa a hibakeresést és a kód nem támogatott módosításait.
Ha le szeretné tiltani a gyakori elérésű újratöltést futtatáskor dotnet watch, használja a --no-hot-reload következő példában látható beállítást:
dotnet watch --no-hot-reload
Példák
Futtassa
dotnet runa projektet az aktuális könyvtárban, amikor a forráskód megváltozik:dotnet watchVagy:
dotnet watch runFuttassa
dotnet testa projektet az aktuális könyvtárban, amikor a forráskód megváltozik:dotnet watch testFuttassa
dotnet run --project ./HelloWorld.csproja forráskód minden módosításakor:dotnet watch run --project ./HelloWorld.csprojFuttassa
dotnet run -- arg0a projektet az aktuális könyvtárban, amikor a forráskód megváltozik:dotnet watch run -- arg0Vagy:
dotnet watch -- run arg0
Lásd még
- Tutorial: ASP.NET Core-alkalmazások fejlesztése fájlfigyelővel
Hot újratöltése a Visual Studio - Támogatott alkalmazások gyakori újratöltése
- Támogatott kódmódosítások gyakori újratöltése
- Gyakori elérésű újratöltési teszt végrehajtása
A ASP.NET Core