Åtgärd: Sökvägsnormalisering
Från och med appar som riktar in sig på .NET Framework 4.6.2 har sökvägsnormaliseringen i .NET Framework ändrats.
Vad är sökvägsnormalisering?
Normalisering av en sökväg innebär att ändra strängen som identifierar en sökväg eller fil så att den överensstämmer med en giltig sökväg i måloperativsystemet. Normalisering omfattar vanligtvis:
Kanonisera komponent- och katalogavgränsare.
Tillämpa den aktuella katalogen på en relativ sökväg.
Utvärdera den relativa katalogen (
.
) eller den överordnade katalogen (..
) i en sökväg.Trimma angivna tecken.
Ändringarna
Från och med appar som riktar sig mot .NET Framework 4.6.2 har sökvägsnormaliseringen ändrats på följande sätt:
Körningen defererar till operativsystemets GetFullPathName-funktion för att normalisera sökvägar.
Normalisering innebär inte längre att slutet av katalogsegmenten trimmas (till exempel ett blanksteg i slutet av ett katalognamn).
Stöd för syntax för enhetssökväg i fullständigt förtroende, inklusive
\\.\
och för fil-I/O-API:er i mscorlib.dll,\\?\
.Körningen validerar inte enhetssyntaxsökvägar.
Användning av enhetssyntax för åtkomst till alternativa dataströmmar stöds.
Påverkan
För appar som riktar in sig på .NET Framework 4.6.2 eller senare är dessa ändringar aktiverade som standard. De bör förbättra prestanda samtidigt som metoder kan komma åt tidigare otillgängliga sökvägar.
Appar som riktar sig mot .NET Framework 4.6.1 och tidigare versioner men som körs under .NET Framework 4.6.2 eller senare påverkas inte av den här ändringen.
Åtgärd
Appar som riktar sig mot .NET Framework 4.6.2 eller senare kan välja bort den här ändringen och använda äldre normalisering genom att lägga till följande i <körningsavsnittet> i programkonfigurationsfilen:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>
Appar som riktar sig mot .NET Framework 4.6.1 eller tidigare men som körs på .NET Framework 4.6.2 eller senare kan aktivera ändringar i sökvägsnormalisering genom att lägga till följande rad i <körningsavsnittet> i programmets .configuration-fil:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>