dotnet watch

Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler

Veri Akışı Adı

dotnet watch - Kaynak kodunda değişiklikler algılandığında, belirtilen uygulamayı yeniden başlatır veya çalışırken yeniden yükler veya belirtilen dotnet komutunu çalıştırır.

Özet

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

dotnet watch -?|-h|--help

Açıklama

Komut dotnet watch bir dosya izleyicisidir. Bir değişiklik algıladığında komutunu veya belirtilen dotnet komutu çalıştırırdotnet run. çalıştırılırsa dotnet runve bu değişiklik çalışırken yeniden yükleme için destekleniyorsa, çalışırken belirtilen uygulamayı yeniden yükler. Değişiklik desteklenmiyorsa uygulamayı yeniden başlatır. Bu işlem, komut satırından hızlı yinelemeli geliştirmeyi etkinleştirir.

komutunu çalıştırırken dotnet watch, komut kabuğunda Ctrl+R tuşlarına basarak uygulamayı yeniden derlemeye ve yeniden başlatmaya zorlayabilirsiniz. Bu özellik yalnızca uygulama çalışırken kullanılabilir. Örneğin, Ctrl+R tuşlarına basmadan önce biten bir konsol uygulamasında çalışıyorsanız dotnet watch , Ctrl+R tuşlarına basmanın hiçbir etkisi olmaz. Ancak, bu durumda dotnet watch hala dosyaları izliyor ve bir dosya güncelleştirilirse uygulamayı yeniden başlatır.

Yanıt sıkıştırma

Yanıt sıkıştırma kullanan bir uygulama için çalıştırılırsadotnet watch, araç tarayıcı yenileme betiğini ekleyemez. Aracın .NET 7 ve sonraki sürümü aşağıdakine benzer bir uyarı iletisi görüntüler:

warn: Microsoft.AspNetCore.Watch.BrowserRefresh.BrowserRefreshMiddleware[4]

Yanıtta tarayıcı yenileme betiği ekleme yapılandırılamıyor. Bu, yanıtın Content-Encoding: 'br' hatasından kaynaklanıyor olabilir. Yanıt sıkıştırmayı devre dışı bırakmayı göz önünde bulundurun.

Yanıt sıkıştırmasını devre dışı bırakmaya alternatif olarak, tarayıcı yenileme JavaScript başvurularını uygulamanın sayfalarına el ile ekleyin:

@if (Environment.GetEnvironmentVariable("__ASPNETCORE_BROWSER_TOOLS") is not null)
{
    <script src="/_framework/aspnetcore-browser-refresh.js"></script>
}

Bağımsız değişkenler

  • <command>

    .NET 7 SDK ve önceki sürümlerinde, dotnet watch yerleşik CLI komutları ve genel araçlar gibi yürütülebilir dosya aracılığıyla dotnet dağıtılan herhangi bir komutu çalıştırabilir. komutunu çalıştırabiliyorsanız dotnet <command>komutunu çalıştırabilirsiniz dotnet watch <command>.

    .NET 8 SDK ve sonraki sürümlerde dotnet watch , dotnet buildveya dotnet testkomutunu çalıştırabilirdotnet run. için <command>, buildveya test belirtinrun.

    Alt komut belirtilmezse, varsayılan değeri için dotnet runolurrun.

  • <forwarded arguments>

    Çift tireden (--) sonra sağlanan bağımsız değişkenler alt dotnet işleme geçirilir. çalıştırıyorsanızdotnet watch run, bu bağımsız değişkenler dotnet çalıştırma seçenekleridir. çalıştırıyorsanızdotnet watch test, bu bağımsız değişkenler dotnet testi seçenekleridir.

Seçenekler

  • --list

    İzleyiciyi başlatmadan bulunan tüm dosyaları listeler.

  • --no-hot-reload

    Desteklenen uygulamalar için sık erişimli yeniden yüklemeyi gizleme.

  • --non-interactive

    Etkileşimli olmayan modda çalışır dotnet watch . Konsol girişinin istenmesini önlemek için bu seçeneği kullanın. Sık erişimli yeniden yükleme etkinleştirildiğinde ve kaba bir düzenleme algılandığında dotnet watch uygulamayı yeniden başlatır. .NET 7 SDK'sı ile kullanılabilir.

  • --project <PATH>

    Çalıştırılacak proje dosyasının yolunu belirtir (yalnızca klasör veya proje dosyası adı dahil). Belirtilmezse, varsayılan olarak geçerli dizine geçer.

  • -q|--quiet

    Uyarılar ve hatalar dışında komut tarafından dotnet watch oluşturulan tüm çıktıları gizler. seçeneği alt komutlara geçirilmemiştir. Örneğin, çıkış ve dotnet restoredotnet run çıkış olmaya devam eder.

  • -v|--verbose

    Hata ayıklama için ayrıntılı çıktıyı gösterir.

  • --version

    sürümünü dotnet watchgösterir.

  • --

    Çift çizgi seçeneği ('--') alt işleme geçirilecek bağımsız değişkenlerden seçenekleri sınırlandırmak dotnet watch için kullanılabilir. Kullanımı isteğe bağlıdır. Çift çizgi seçeneği kullanılmadığında, dotnet watch tanınmayan ilk bağımsız değişkeni alt işleme geçirmesi dotnet gereken bağımsız değişkenlerin başlangıcı olarak kabul eder.

Ortam değişkenleri

dotnet watch aşağıdaki ortam değişkenlerini kullanır:

  • DOTNET_HOTRELOAD_NAMEDPIPE_NAME

    Bu değer, uygulama başlatılacağı zaman tarafından dotnet watch yapılandırılır ve adlandırılmış kanalı belirtir.

  • DOTNET_USE_POLLING_FILE_WATCHER

    veya trueolarak ayarlandığında1, dotnet watch yerine bir yoklama dosyası izleyicisi System.IO.FileSystemWatcherkullanır. Ağ paylaşımları, Docker'a bağlı birimler ve diğer sanal dosya sistemleri gibi bazı dosya sistemleri için yoklama gereklidir. sınıfı, PhysicalFileProvider yönteminin PhysicalFileProvider.Watch öğesine güvenip güvenmeyeceğini PollingFileChangeTokenbelirlemek için kullanırDOTNET_USE_POLLING_FILE_WATCHER.

  • DOTNET_WATCH

    dotnet watch , başlattığı tüm alt işlemlerde bu değişkeni 1 olarak ayarlar.

  • DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME

    bir dotnet watchparçası olarak, tarayıcı yenileme sunucusu mekanizması WebSocket konak ortamını belirlemek için bu değeri okur. değeri 127.0.0.1 ile localhostdeğiştirilir ve http:// ve https:// düzenleri sırasıyla ve wss:// ile ws:// değiştirilir.

  • DOTNET_WATCH_ITERATION

    dotnet watch bu değişkeni 1 olarak ayarlar ve bir dosya her değiştirildiğinde ve komut yeniden başlatıldığında veya sık erişimli olarak uygulamayı yeniden yükleyişinde bir artırılır.

  • DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH

    veya trueolarak ayarlandığında1, dotnet watch dosya değişiklikleri algıladığında tarayıcılar yenilenmez.

  • DOTNET_WATCH_SUPPRESS_EMOJIS

    .NET SDK 6.0.300 ve üzeri ile, dotnet watch aşağıdaki örnekte gösterildiği gibi konsola ASCII olmayan karakterler yayar:

    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...
    

    Bazı konsol konaklarında bu karakterler bozuk görünebilir. Bozuk karakterlerle karşılaşmamak için bu değişkeni veya trueolarak 1 ayarlayın.

  • DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER

    veya trueolarak ayarlandığında1, dotnet watch launchSettings.json'de yapılandırılan web uygulamaları launchBrowser için tarayıcıları başlatmaz veya yenilemez.

  • DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISM

    Varsayılan olarak, dotnet watch geri yüklemeyi çalıştırma veya her dosya değişikliğinde izlenen dosya kümesini yeniden değerlendirme gibi belirli işlemlerden kaçınarak derlemeyi iyileştirir. Bu değişken veya trueolarak ayarlandıysa1, bu iyileştirmeler devre dışı bırakılır.

  • DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING

    veya truedotnet watch olarak ayarlandığında1, statik içerik dosyaları için özel işleme yapmaz. dotnet watch MSBuild özelliğini DotNetWatchContentFiles olarak falseayarlar.

  • DOTNET_WATCH_RESTART_ON_RUDE_EDIT

    veya trueolarak ayarlandığında1, dotnet watch her zaman sormak yerine kaba düzenlemelerde yeniden başlatılır.

Varsayılan olarak izlenen dosyalar

dotnet watch proje dosyasındaki öğe grubundaki Watch tüm öğeleri izler. Varsayılan olarak, bu grup ve EmbeddedResource gruplarındaki Compile tüm öğeleri içerir. dotnet watch ayrıca proje başvurularının tüm grafiğini tarar ve bu projelerdeki tüm dosyaları izler.

Varsayılan olarak, Compile ve EmbeddedResource grupları aşağıdaki glob desenleri ile eşleşen tüm dosyaları içerir:

  • **/*.cs
  • *.csproj
  • **/*.resx
  • Web uygulamalarında içerik dosyaları: wwwroot/**

Yapılandırma sisteminin yapılandırma değişikliklerini işlemek için kendi mekanizmaları olduğundan varsayılan olarak .config ve .json dosyaları dotnet watch yeniden başlatma işlemini tetiklemez.

Dosyalar izleme listesine eklenebilir veya proje dosyası düzenlenerek listeden kaldırılabilir. Dosyalar tek tek veya glob desenleri kullanılarak belirtilebilir.

Ek dosyaları izleyin

Gruba öğe Watch eklenerek daha fazla dosya izlenebilir. Örneğin, aşağıdaki işaretleme bu grubu JavaScript dosyalarını içerecek şekilde genişletir:

<ItemGroup>
  <Watch Include="**\*.js" Exclude="node_modules\**\*;**\*.js.map;obj\**\*;bin\**\*" />
</ItemGroup>

Belirtilen dosyaları yoksay

dotnet watchaşağıdaki örnekte gösterildiği gibi özniteliğine Watch="false" sahip ve EmbeddedResource öğelerini yoksayarCompile:

<ItemGroup>
  <Compile Update="Generated.cs" Watch="false" />
  <EmbeddedResource Update="Strings.resx" Watch="false" />
</ItemGroup>

dotnet watch aşağıdaki örnekte gösterildiği gibi özniteliğine Watch="false" sahip proje başvurularını yoksayar:

<ItemGroup>
  <ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" Watch="false" />
</ItemGroup>

Gelişmiş yapılandırma

dotnet watch , izleyebileceğiniz öğeleri bulmak için bir tasarım zamanı derlemesi gerçekleştirir. Bu derleme çalıştırıldığında özelliğini dotnet watchDotNetWatchBuild=trueayarlar. Bu özellik aşağıdaki örnekte gösterildiği gibi kullanılabilir:

<ItemGroup Condition="'$(DotNetWatchBuild)'=='true'">
  <!-- only included in the project when dotnet-watch is running -->
</ItemGroup>

Çalışırken Yeniden Yükleme

.NET 6'dan başlayarak, dotnet watch sık erişimli yeniden yükleme desteği içerir. Sık erişimli yeniden yükleme, yeniden derlemek ve yeniden başlatmak zorunda kalmadan çalışan bir uygulamaya değişiklik uygulamanıza olanak tanıyan bir özelliktir. Değişiklikler kod dosyalarında veya stil sayfası dosyaları ve JavaScript dosyaları gibi statik varlıklarda olabilir. Bu özellik, uygulamanızı değiştirdiğinizde anında geri bildirim sağladığından yerel geliştirme deneyimini kolaylaştırır.

Sık erişimli yeniden yüklemeyi destekleyen uygulama türleri ve .NET sürümleri hakkında bilgi için bkz . Desteklenen .NET uygulama çerçeveleri ve senaryoları.

Kaba düzenlemeler

Bir dosya değiştirildiğinde, dotnet watch uygulamanın çalışırken yeniden yüklenip yüklenemediğini belirler. Çalışırken yeniden yüklenmiyorsa, değişiklik kaba bir düzenleme olarak adlandırılır ve dotnet watch uygulamayı yeniden başlatmak isteyip istemediğinizi sorar:

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)?
  • Evet: Uygulamayı yeniden başlatır.
  • Hayır: Değişiklikler uygulanmadan uygulamayı çalışır durumda bırakır.
  • Her zaman: Uygulamayı yeniden başlatır ve artık kaba düzenlemeler istemez.
  • Hiçbir zaman: Değişiklikler uygulanmadan uygulamayı çalışır durumda bırakır ve artık kaba düzenlemeler istenmez.

Ne tür değişikliklerin kaba düzenlemeler olarak kabul edildiği hakkında bilgi için bkz . Kodu düzenleme ve hata ayıklamaya devam etme ve Kodda desteklenmeyen değişiklikler.

komutunu çalıştırdığınızda dotnet watchsık erişimli yeniden yüklemeyi devre dışı bırakmak için, aşağıdaki örnekte gösterildiği gibi seçeneğini kullanın --no-hot-reload :

dotnet watch --no-hot-reload 

Örnekler

  • Kaynak kodu her değiştiğinde geçerli dizinde proje için komutunu çalıştırın dotnet run :

    dotnet watch
    

    Veya:

    dotnet watch run
    
  • Kaynak kodu her değiştiğinde geçerli dizinde proje için komutunu çalıştırın dotnet test :

    dotnet watch test
    
  • Kaynak kodu her değiştiğinde komutunu çalıştırın dotnet run --project ./HelloWorld.csproj :

    dotnet watch run --project  ./HelloWorld.csproj
    
  • Kaynak kodu her değiştiğinde geçerli dizinde proje için komutunu çalıştırın dotnet run -- arg0 :

    dotnet watch run -- arg0
    

    Veya:

    dotnet watch -- run arg0
    

Ayrıca bkz.