dotnet watch
Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler
Name
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
Description
dotnet watch
komut 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 run
ve değişiklik sık erişimli yeniden yükleme için destekleniyorsa, belirtilen uygulamayı çalışırken yeniden yükler. Değişiklik desteklenmiyorsa uygulamayı yeniden başlatır. Bu işlem, komut satırından hızlı yinelemeli geliştirme sağlar.
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ıştırırsanız dotnet watch
, Ctrl+R tuşlarına basmanın hiçbir etkisi olmaz. Ancak bu durumda dotnet watch
hala dosyaları izler 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. Bunun nedeni yanıtın İçerik Kodlaması: 'br'. Yanıt sıkıştırmayı devre dışı bırakmayı göz önünde bulundurun.
Yanıt sıkıştırmayı devre dışı bırakmaya alternatif olarak, uygulamanın sayfalarına tarayıcı yenileme JavaScript başvurularını 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
dotnet watch
, yerleşik CLI komutları ve genel araçlar gibi yürütülebilir dosya aracılığıyladotnet
dağıtılan herhangi bir komutu çalıştırabilir. çalıştırabiliyorsanızdotnet <command>
komutunu çalıştırabilirsinizdotnet watch <command>
. Alt komut belirtilmezse, varsayılan değer içindotnet run
olurrun
.forwarded arguments
Çift tireden (
--
) sonra sağlanan bağımsız değişkenler altdotnet
işleme geçirilir. çalıştırıyorsanızdotnet watch run
, bu bağımsız değişkenler dotnet çalıştırması için seçeneklerdir. çalıştırıyorsanızdotnet watch test
, bu bağımsız değişkenler dotnet testi için seçeneklerdir.
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 ayarlanır.
-q|--quiet
Uyarılar ve hatalar dışında komut tarafından
dotnet watch
oluşturulan tüm çıkışı gizler. seçeneği alt komutlara geçirilmedi. Örneğin, çıkış vedotnet restore
dotnet run
çıkış olmaya devam eder.-v|--verbose
Hata ayıklama için ayrıntılı çıkışı gösterir.
--version
sürümünü
dotnet watch
gö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şkenin altdotnet
işleme geçirmesi gereken bağımsız değişkenlerin başlangıcı olduğunu düşünür.
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ılacak olduğunda tarafından
dotnet watch
yapılandırılır ve adlandırılmış kanalı belirtir.DOTNET_USE_POLLING_FILE_WATCHER
veya
true
olarak ayarlandığında1
yerinedotnet watch
bir yoklama dosyası izleyicisi System.IO.FileSystemWatcherkullanır. Yoklama, ağ paylaşımları, Docker'a bağlı birimler ve diğer sanal dosya sistemleri gibi bazı dosya sistemleri için 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şkeni1
olarak ayarlar.DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME
'nin
dotnet watch
bir parçası olarak, tarayıcı yenileme sunucusu mekanizması WebSocket konak ortamını belirlemek için bu değeri okur. değeri127.0.0.1
ilelocalhost
http://
, vehttps://
düzenleri ise sırasıyla vewss://
ilews://
değiştirilir.DOTNET_WATCH_ITERATION
dotnet watch
bu değişkeni1
olarak ayarlar ve bir dosya her değiştirildiğinde ve komut yeniden başlatıldığında veya çalışırken uygulamayı yeniden yükleyişinde bir artırılır.DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH
veya
true
olarak ayarlandığında1
,dotnet watch
dosya değişikliklerini 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 karakterler görmekten kaçınmak için bu değişkeni veya
true
olarak1
ayarlayın.DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER
veya
true
olarak ayarlandığında1
launchSettings.jsondotnet watch
dosyasında yapılandırılmış web uygulamalarınınlaunchBrowser
tarayıcılarını 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şlemleri önleyerek derlemeyi iyileştirir. Bu değişken veyatrue
olarak ayarlandıysa1
, bu iyileştirmeler devre dışı bırakılır.DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING
veya
true
dotnet watch
olarak ayarlandığında1
, statik içerik dosyaları için özel işleme yapmaz.dotnet watch
MSBuild özelliğiniDotNetWatchContentFiles
olarakfalse
ayarlar.DOTNET_WATCH_RESTART_ON_RUDE_EDIT
veya
true
olarak 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 Watch
öğe grubundaki 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/**
Varsayılan olarak ,.configve .json dosyaları yapılandırma sisteminin yapılandırma değişikliklerini işlemek için kendi mekanizmaları olduğundan yeniden başlatma watch bir dotnet tetiklemez.
Dosyalar watch listesine eklenebilir veya proje dosyası düzenlenerek listeden kaldırılabilir. Dosyalar tek tek veya glob desenleri kullanılarak belirtilebilir.
Ek dosyaları izleme
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 watch
aşağıdaki örnekte gösterildiği gibi özniteliğine Watch="false"
sahip olan 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
watch öğeleri bulmak için bir tasarım zamanı derlemesi gerçekleştirir. Bu derleme çalıştırıldığında özelliğini dotnet watch
DotNetWatchBuild=true
ayarlar. 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üklenebileceğini belirler. Sık erişimli 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 isteyip istemediğinizi sormaz.
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.
çalıştırdığınızda dotnet watch
sı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.
- Öğ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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin