Udostępnij za pośrednictwem


Środki zaradcze: Normalizacja ścieżki

Począwszy od aplikacji przeznaczonych dla programu .NET Framework 4.6.2, normalizacja ścieżki w programie .NET Framework uległa zmianie.

Co to jest normalizacja ścieżki?

Normalizacja ścieżki polega na zmodyfikowaniu ciągu identyfikującego ścieżkę lub plik, tak aby była zgodna z prawidłową ścieżką w docelowym systemie operacyjnym. Normalizacja zwykle obejmuje:

  • Canonicalizing component and directory separators (Kanoniczne separatory składników i katalogów).

  • Zastosowanie bieżącego katalogu do ścieżki względnej.

  • Ocenianie katalogu względnego (.) lub katalogu nadrzędnego (..) w ścieżce.

  • Przycinanie określonych znaków.

Zmiany

Począwszy od aplikacji przeznaczonych dla programu .NET Framework 4.6.2, normalizacja ścieżki zmieniła się w następujący sposób:

  • Środowisko uruchomieniowe odchyli do funkcji GetFullPathName systemu operacyjnego w celu normalizacji ścieżek.

  • Normalizacja nie obejmuje już przycinania końca segmentów katalogu (takich jak spacja na końcu nazwy katalogu).

  • Obsługa składni ścieżki urządzenia w pełnym zaufaniu, w tym \\.\ interfejsów API we/wy plików w mscorlib.dll, \\?\.

  • Środowisko uruchomieniowe nie weryfikuje ścieżek składni urządzenia.

  • Używanie składni urządzenia do uzyskiwania dostępu do alternatywnych strumieni danych jest obsługiwane.

Wpływ

W przypadku aplikacji przeznaczonych dla programu .NET Framework 4.6.2 lub nowszego te zmiany są domyślnie włączone. Powinny one poprawić wydajność, umożliwiając metodom uzyskiwanie dostępu do wcześniej niedostępnych ścieżek.

Te zmiany nie mają wpływu na aplikacje przeznaczone dla programu .NET Framework 4.6.1 i starszych wersji, ale działają w programie .NET Framework 4.6.2 lub nowszym.

Czynności zapobiegawcze

Aplikacje przeznaczone dla programu .NET Framework 4.6.2 lub nowszego mogą zrezygnować z tej zmiany i korzystać ze starszej normalizacji, dodając następujące informacje do <sekcji środowiska uruchomieniowego> pliku konfiguracji aplikacji:

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

Aplikacje przeznaczone dla programu .NET Framework 4.6.1 lub starszego, ale działają w programie .NET Framework 4.6.2 lub nowszym, mogą włączyć zmiany normalizacji ścieżki, dodając następujący wiersz do <sekcji środowiska uruchomieniowego> pliku konfiguracji aplikacji:

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

Zobacz też