Megosztás a következőn keresztül:


dotnet óra

Ez a cikk a következőre vonatkozik: ✔️ .NET Core 3.1 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.

Szinopszis

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

dotnet watch -?|-h|--help

Leírás

A dotnet watch parancs egy fájlfigyelő. Amikor változást észlel, futtatja a dotnet run parancsot vagy egy megadott dotnet parancsot. Ha futdotnet 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 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 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>
}

Argumentumok

  • <command>

    A .NET 7 SDK-ban és a korábbi verziókban bármilyen, dotnet watch a dotnet végrehajtható parancson keresztül küldött parancs futtatható, például beépített PARANCSSOR-parancsokkal és globális eszközökkel. Ha futtatható dotnet <command>, futtathatja a parancsot dotnet watch <command>.

    A .NET 8 SDK-ban és újabb verziókban dotnet watch futtathatók , dotnet buildvagy dotnet test.dotnet run Adja meg run, buildvagy test a következőhöz <command>: .

    Ha a gyermekparancs nincs megadva, az alapértelmezett érték a run következő dotnet run: .

  • <forwarded arguments>

    A kettős kötőjel (--) után megadott argumentumokat a rendszer átadja a gyermekfolyamatnak dotnet . 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ások gyakori újratöltésének letiltása.

  • --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 engedélyezve van a gyakori újratöltés, és durva szerkesztést észlel, a dotnet watch újraindítja az alkalmazást. A .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.

  • -q|--quiet

    A parancs által generált összes kimenetet letiltja a dotnet watch figyelmezteté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ármazik dotnet restore , és dotnet run továbbra is kimenet marad.

  • -v|--verbose

    Részletes kimenetet jelenít meg a hibakereséshez.

  • --version

    A 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 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ő felismeretlen argumentumot az argumentumok elejének tekinti, dotnet watch amelyeket át kell adnia a gyermekfolyamatba dotnet .

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 be van állítva, 1 vagy trueegy dotnet watch leké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álja DOTNET_USE_POLLING_FILE_WATCHER , hogy a PhysicalFileProvider.Watch metódus a PollingFileChangeToken.

  • DOTNET_WATCH

    dotnet watch beállítja ezt a változót 1 az összes elindított gyermekfolyamatra.

  • DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME

    Ennek 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ék 127.0.0.1 helyébe az , és a https://http:// sémák lépnek, illetve wss:// azok helyébews://.localhost

  • DOTNET_WATCH_ITERATION

    dotnet watch ezt a változót 1 minden 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_REFRESH

    Ha be van állítva vagy 1true, 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óival nem ASCII-karaktereket bocsát ki a konzolra, ahogyan az 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éphetetlennek tűnhetnek. Ha el szeretné kerülni a felesleges karaktereket, állítsa ezt a változót a következőre 1 : vagy true.

  • DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER

    Ha be van 1 állítva vagytrue, dotnet watch nem indít el vagy frissít böngészőket a launchBrowser launchSettings.json konfigurált webalkalmazásokhoz.

  • 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 ismételt kiértékelésével minden fájlmódosításkor. Ha a változó értéke vagy trueértéke1, ezek az optimalizálások le vannak tiltva.

  • DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING

    Ha be van 1 állítva vagy true, dotnet watch nem fog speciálisan kezelni a statikus tartalomfájlokat. dotnet watch az MSBuild tulajdonságot DotNetWatchContentFiles a értékre állítja false.

  • DOTNET_WATCH_RESTART_ON_RUDE_EDIT

    Ha be van állítva vagy 1true, dotnet watch mindig ú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 EmbeddedResource a Compile 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 a .config és .json fájlok nem aktiválják 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 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 attribútummal rendelkező Watch="false" 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 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>

Gyakori elérésű újratöltés

A .NET 6-tól dotnet watch kezdve támogatja a gyakori elérésű újratöltést. 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 elérésű újratöltést támogató alkalmazástípusokról és .NET-verziókról a támogatott .NET-alkalmazás-keretrendszerek és -forgatókönyvek című témakörben 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 run a projektet az aktuális könyvtárban, amikor a forráskód megváltozik:

    dotnet watch
    

    Vagy:

    dotnet watch run
    
  • Futtassa dotnet test a projektet az aktuális könyvtárban, amikor a forráskód megváltozik:

    dotnet watch test
    
  • Futtassa dotnet run --project ./HelloWorld.csproj a forráskód minden módosításakor:

    dotnet watch run --project  ./HelloWorld.csproj
    
  • Futtassa dotnet run -- arg0 a projektet 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