Eğitim
Modül
.NET uygulamasında dosya ve dizinlerle çalışma - Training
.NET, C# ve System.IO kullanarak dizinler, yollar, dosyalar ve dosya sistemiyle çalışmayı öğrenin.
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
özelliği, IHostEnvironment.ContentRootPath appsettings.json ve diğer içerik dosyalarının ASP.NET uygulamalar da dahil olmak üzere barındırılan bir uygulamaya yüklendiği varsayılan dizini temsil eder. Bu özelliğin değeri varsayılan olarak Environment.CurrentDirectoryuygulamanın geçerli çalışma dizinidir. Bu davranış, aynı uygulamanın farklı çalışma dizinleri altında yürütülmesini ve her dizindeki içeriği kullanmasını sağlar.
Bir Windows işlemi (uygulama veya hizmet) çalışma dizini belirtilmeden başlatıldığında, onu oluşturan işlemin çalışma dizini kullanılır. Windows Kabuğu'nun veya services.exe çalışma dizini %windir%\system32 (veya System
özel klasör) dizinidir. Bu işlemlerden biri barındırılan bir uygulamayı başlattığındaContentRootPath
, özellik %windir%\system32 olarak ayarlanır.
Bu davranış kafa karıştırıcıdır ve uygulama %windir%\system32 dizininden dosya yüklemeye çalıştığından barındırılan uygulamaların başarısız olmasına neden olur, ancak yok. Örneğin, appsettings.json dosyası çalışma zamanında bulunmaz ve ayarlar uygulanmaz.
.NET 7'den başlayarak, barındırılan bir uygulama geçerli dizin özel klasöre System
ayarlanmış olarak başlatıldığında, özelliği varsayılan olarak ContentRootPath
olarak AppContext.BaseDirectoryayarlanır.
.NET 7
Host.CreateDefaultBuilderContentRootPath, geçerli dizinin değerinden bağımsız olarak özelliğini Environment.CurrentDirectory olarak varsayılan olarak ayarlayın.
Host.CreateDefaultBuilderözelliği artık Windows'ta özel bir klasörse geçerli dizine System
varsayılan olarak ContentRootPath ayarlamıyor. Bunun yerine uygulamanın temel dizini kullanılır.
Bu değişiklik ikili uyumluluğu etkileyebilir.
Uygulama geliştiricileri, belirli durumlarda uygulamaları Windows tarafından başlatıldığında (örneğin, uygulama MSIX olarak paketlendiğinde veya Başlat Menüsünden başlatıldığında) C:\Windows\system32 olmasını beklemiyorlardıContentRootPath. Bu gibi durumlarda, özelliği uygulamanın temel dizinine varsayılan olarak ContentRootPath ayarlamak daha iyidir.
Önceki davranışı kullanmak istiyorsanız, oluştururken IHostBuilderözelliğini açıkça ayarlayabilirsinizContentRootPath
:
Host
.CreateDefaultBuilder()
.UseContentRoot(Environment.CurrentDirectory)
....
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Eğitim
Modül
.NET uygulamasında dosya ve dizinlerle çalışma - Training
.NET, C# ve System.IO kullanarak dizinler, yollar, dosyalar ve dosya sistemiyle çalışmayı öğrenin.