Share via


Azaltma: Yol Normalleştirmesi

.NET Framework 4.6.2'yi hedefleyen uygulamalardan başlayarak, .NET Framework'teki yol normalleştirmesi değişti.

Yol normalleştirme nedir?

Yolu normalleştirmek, bir yolu veya dosyayı tanımlayan dizeyi, hedef işletim sistemindeki geçerli bir yola uyacak şekilde değiştirmeyi içerir. Normalleştirme genellikle şunları içerir:

  • Bileşen ve dizin ayırıcılarını kurallı hale getirme.

  • Geçerli dizini göreli bir yola uygulama.

  • Bir yoldaki göreli dizini (.) veya üst dizini (..) değerlendirme.

  • Belirtilen karakterler kırpılır.

Değişiklikler

.NET Framework 4.6.2'yi hedefleyen uygulamalardan başlayarak, yol normalleştirmesi aşağıdaki yollarla değişti:

  • Çalışma zamanı, yolları normalleştirmek için işletim sisteminin GetFullPathName işlevine karşı çıkar.

  • Normalleştirme artık dizin kesimlerinin sonunu kırpmayı (dizin adının sonundaki boşluk gibi) içermez.

  • mscorlib.dll içindeki dosya G/Ç API'leri için ve dahil olmak üzere \\.\ tam güven içinde cihaz yolu söz dizimi desteği. \\?\

  • Çalışma zamanı, cihaz söz dizimi yollarını doğrulamaz.

  • Alternatif veri akışlarına erişmek için cihaz söz dizimi kullanımı desteklenir.

Etki

.NET Framework 4.6.2 veya üstünü hedefleyen uygulamalar için bu değişiklikler varsayılan olarak açıktır. Yöntemlerin daha önce erişilemeyen yollara erişmesine izin verirken performansı geliştirmeleri gerekir.

.NET Framework 4.6.1 ve önceki sürümlerini hedefleyen ancak .NET Framework 4.6.2 veya üzeri altında çalışan uygulamalar bu değişiklikten etkilenmez.

Risk azaltma

.NET Framework 4.6.2 veya üstünü hedefleyen uygulamalar bu değişikliği geri çevirebilir ve uygulama yapılandırma dosyasının <çalışma zamanı> bölümüne aşağıdakileri ekleyerek eski normalleştirmeyi kullanabilir:

<runtime>  
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>  

.NET Framework 4.6.1 veya önceki sürümleri hedefleyen ancak .NET Framework 4.6.2 veya sonraki sürümlerinde çalışan uygulamalar, uygulama .configuration dosyasının çalışma zamanı> bölümüne aşağıdaki satırı <ekleyerek yol normalleştirmesinde yapılan değişiklikleri etkinleştirebilir:

<runtime>  
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>  

Ayrıca bkz.