Share via


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 runa ,-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 watchsorá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 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:

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 a dotnet globális eszközök segítségével bármilyen parancsot futtathat. Ha futtatható dotnet <command>, futtathatja a parancsot dotnet 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 gyermekfolyamatnak dotnet . Ha fut dotnet watch run, ezek az argumentumok a dotnet futtatásának lehetőségei. Ha fut dotnet 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ől dotnet restore származik, és dotnet run továbbra is kimenet marad.

  • -v|--verbose

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

  • --version

    A 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ő ismeretlen 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 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 azt DOTNET_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ót 1 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 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 a , és a és https:// a http:// sémák lépnek ws://wss://.localhost

  • DOTNET_WATCH_ITERATION

    dotnet watch ezt a változót 1 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ékre 1 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ékre 1 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 vagy trueértékre 1 van állítva, ezek az optimalizálások le lesznek tiltva.

  • DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING

    Ha a vagy trueértékre 1 van állítva, dotnet watch a statikus tartalomfájlok esetében nem végez speciális kezelést. dotnet watch az MSBuild tulajdonságot DotNetWatchContentFiles a értékre falseállítja.

  • DOTNET_WATCH_RESTART_ON_RUDE_EDIT

    Ha a vagy trueértékre 1 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 EmbeddedResourceWatch="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 watchtervezé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