Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale şunlar için geçerlidir: ✔️ .NET 6 SDK ve sonraki sürümler
İsim
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>]
[--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
Komut dotnet watch bir dosya izleyicisidir. Bir değişiklik algıladığında komutunu veya belirtilen dotnet run komutu çalıştırırdotnet. ç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
dotnet watch kullanan bir uygulama için çalıştırılırsa, 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>
}
Arguments
<command>.NET 7 SDK ve önceki sürümlerinde,
dotnet watchyerleşik CLI komutları ve genel araçlar gibi yürütülebilir dosya aracılığıyladotnetdağıtılan herhangi bir komutu çalıştırabilir. komutunu çalıştırabiliyorsanızdotnet <command>komutunu çalıştırabilirsinizdotnet watch <command>..NET 8 SDK ve sonraki sürümlerde
dotnet watch,dotnet runveyadotnet buildkomutunu çalıştırabilirdotnet test. içinrun,buildveyatestbelirtin<command>.Alt komut belirtilmezse, varsayılan değeri için
runolurdotnet run.<forwarded arguments>Çift tireden (
--) sonra sağlanan bağımsız değişkenler altdotnetiş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.
Options
-
--artifacts-path <ARTIFACTS_DIR>Yürütülen komuttaki tüm derleme çıktı dosyaları, projeyle ayrılmış olarak belirtilen yolun altındaki alt klasörlere gider. Daha fazla bilgi için bkz. Artifacts Output Layout. .NET 8 SDK'sı ile kullanılabilir.
-
--disable-build-serversKomutu kalıcı derleme sunucularını yoksaymaya zorlar. Bu seçenek, derleme önbelleğinin tüm kullanımını devre dışı bırakmak için tutarlı bir yol sağlar ve bu da bir derlemeyi sıfırdan zorlar. Önbelleklere güvenmeyen bir derleme, önbellekler herhangi bir nedenle bozulduğunda veya yanlış olduğunda kullanışlıdır. .NET 7 SDK'sı ile kullanılabilir.
--listİzleyiciyi başlatmadan bulunan tüm dosyaları listeler.
-
--no-self-containedUygulamanızı çerçeveye bağımlı bir uygulama olarak yayımlayın. Uygulamanızı çalıştırmak için hedef makineye uyumlu bir .NET çalışma zamanı yüklenmelidir.
--no-hot-reloadDesteklenen uygulamalar için sık erişimli yeniden yüklemeyi gizleme.
--non-interactiveEtkileş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.
-
--sc|--self-containedÇalışma zamanının hedef makineye yüklenmesi gerekmemesi için .NET çalışma zamanını uygulamanızla yayımlayın.
-q|--quietUyarılar ve hatalar dışında komut tarafından
dotnet watcholuşturulan tüm çıktıları gizler. seçeneği alt komutlara geçirilmemiştir. Örneğin, çıkış vedotnet restoredotnet runçıkış olmaya devam eder.-v|--verboseHata ayıklama için ayrıntılı çıktıyı gösterir.
--versionsü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 watchiçin kullanılabilir. Kullanımı isteğe bağlıdır. Çift çizgi seçeneği kullanılmadığında,dotnet watchtanınmayan ilk bağımsız değişkeni alt işleme geçirmesidotnetgereken bağımsız değişkenlerin başlangıcı olarak kabul eder.-
-?|-h|--helpkomutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.
Ortam değişkenleri
dotnet watch aşağıdaki ortam değişkenlerini kullanır:
DOTNET_HOTRELOAD_NAMEDPIPE_NAMEBu değer, uygulama başlatılacağı zaman tarafından
dotnet watchyapılandırılır ve adlandırılmış kanalı belirtir.DOTNET_USE_POLLING_FILE_WATCHERveya
1olarak ayarlandığındatrue,dotnet watchyerine 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öntemininDOTNET_USE_POLLING_FILE_WATCHERöğesine güvenip güvenmeyeceğini PhysicalFileProvider.Watchbelirlemek için kullanırPollingFileChangeToken.DOTNET_WATCHdotnet watch, başlattığı tüm alt işlemlerde bu değişkeni1olarak ayarlar.DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAMEbir
dotnet watchparçası olarak, tarayıcı yenileme sunucusu mekanizması WebSocket konak ortamını belirlemek için bu değeri okur. değeri127.0.0.1ilelocalhostdeğiştirilir vehttp://vehttps://düzenleri sırasıyla vews://ilewss://değiştirilir.DOTNET_WATCH_ITERATIONdotnet watchbu değişkeni1olarak 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_REFRESHveya
1olarak ayarlandığındatrue,dotnet watchdosya değişiklikleri algıladığında tarayıcılar yenilenmez.DOTNET_WATCH_SUPPRESS_EMOJIS.NET SDK 6.0.300 ve üzeri ile,
dotnet watchaş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
1olaraktrueayarlayın.DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSERveya olarak ayarlandığında
1,truedotnet watchyapılandırılan web uygulamalarınınlaunchBrowsertarayıcılarını başlatmaz veya yenilemez.DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISMVarsayılan olarak,
dotnet watchgeri 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 veya1olarak ayarlandıysatrue, bu iyileştirmeler devre dışı bırakılır.DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLINGveya
1trueolarak ayarlandığındadotnet watch, statik içerik dosyaları için özel işleme yapmaz.dotnet watchMSBuild özelliğiniDotNetWatchContentFilesolarakfalseayarlar.DOTNET_WATCH_RESTART_ON_RUDE_EDITveya
1olarak ayarlandığındatrue,dotnet watchher 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 Compile gruplarındaki EmbeddedResource 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/**
Varsayılan olarak, .configve .json dosyaları, yapılandırma sisteminin yapılandırma değişikliklerini işlemek için kendi mekanizmaları olduğundan dotnet watch yeniden başlatmasını 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 dosya ve klasörleri yoksay
Watch="false" Belirtilen dosyaları yoksaymak için özniteliğini kullanın.
DefaultItemExcludes klasör veya dosyaların izlenmesini yoksaymak için özelliğini kullanın.
Dosyaları izlemesini önlemek dotnet watch için, aşağıdaki örnekte gösterildiği gibi özniteliğine sahip Watch="false" ve EmbeddedResource öğelerini kullanınCompile:
<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>
.NET 10'dan başlayarak, tüm klasörlerin veya dosya desenlerinin tarafından dotnet watchizlenmesini dışlamak için özelliğini kullanınDefaultItemExcludes. Bu yaklaşım, derlemeyle ilgili olmayan dosyaları veya istenmeyen yeniden başlatmaları veya yeniden yüklemeleri tetikleyen dosyaları dışlamak istediğinizde kullanışlıdır.
Örneğin, ASP.NET Core uygulamaları klasöründeki App_Data dosyalar uygulama çalışırken değişebilir ve gereksiz sayfa yeniden yüklemelerine neden olabilir. Bu klasörü izlenmekten dışla:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/App_Data/**</DefaultItemExcludes>
</PropertyGroup>
Birden çok deseni noktalı virgülle ayırarak hariç tutun:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/App_Data/**;**/temp/**;**/*.log</DefaultItemExcludes>
</PropertyGroup>
DefaultItemExcludes özelliği ve EmbeddedResourcegibi Compile tüm varsayılan öğe türlerini etkiler. özniteliği, Watch="false" belirli dosyalar veya proje başvuruları üzerinde daha ayrıntılı denetim sağlar.
Daha fazla bilgi için bkz. DefaultItemExcludes başvurusu.
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>
Anında Yeniden Yükleme
.NET 6 SDK'dan başlayarak, dotnet watchsı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 watchVeya:
dotnet watch runKaynak kodu her değiştiğinde geçerli dizinde proje için komutunu çalıştırın
dotnet test:dotnet watch testKaynak kodu her değiştiğinde komutunu çalıştırın
dotnet run --project ./HelloWorld.csproj:dotnet watch run --project ./HelloWorld.csprojKaynak kodu her değiştiğinde geçerli dizinde proje için komutunu çalıştırın
dotnet run -- arg0:dotnet watch run -- arg0Veya:
dotnet watch -- run arg0
Ayrıca bakınız
- Öğretici: Dosya izleyici kullanarak ASP.NET Core uygulamaları geliştirme
- Visual Studio'da sık erişimli yeniden yükleme
- Desteklenen uygulamaları sık erişimli yeniden yükleme
- Sık erişimli yeniden yükleme desteklenen kod değişiklikleri
- Sık erişimli yeniden yükleme testi yürütme
- ASP.NET Core için sık erişimli yeniden yükleme desteği