Migrazione: Normalizzazione del percorso
A partire dalle applicazioni destinate a .NET Framework 4.6.2, la normalizzazione del percorso in .NET Framework è stata modificata.
Che cos'è la normalizzazione di un percorso?
La normalizzazione di un percorso include la modifica della stringa che identifica un file o il percorso in modo che sia conforme a un percorso valido sul sistema operativo di destinazione. In genere, la normalizzazione implica:
La conversione in forma canonica dei separatori di directory e dei componenti.
L'applicazione della directory corrente in un percorso relativo.
La valutazione della directory relativa (
.
) o della directory padre (..
) in un percorso.La rimozione di caratteri specificati.
Le modifiche
A partire dalle applicazioni destinate a .NET Framework 4.6.2, la normalizzazione del percorso è stata modificata come segue:
Il runtime viene rinviato alla funzione GetFullPathName del sistema operativo per normalizzare i percorsi.
La normalizzazione non consiste più nel rimuovere la fine dei segmenti di directory (ad esempio uno spazio alla fine di un nome di directory).
Supporto per la sintassi del percorso dispositivo in attendibilità totale, tra cui
\\.\
e, per le API del file I/O in mscorlib.dll,\\?\
.Il runtime non convalida i percorsi di sintassi del dispositivo.
È supportato l'uso della sintassi del dispositivo per accedere ai flussi di dati alternativi.
Impatto
Per le applicazioni destinate a .NET Framework 4.6.2 o versioni successive, queste modifiche sono applicate per impostazione predefinita. Tali modifiche migliorano le prestazioni, consentendo al contempo ai metodi di accedere ai percorsi in precedenza inaccessibili.
Le applicazioni destinate a .NET Framework 4.6.1 e versioni precedenti ma in esecuzione in .NET Framework 4.6.2 o versioni successive non sono interessate da questa modifica.
Mitigazione
Le app destinate a .NET Framework 4.6.2 o versioni successive possono rifiutare esplicitamente questa modifica e usare la normalizzazione legacy aggiungendo il codice seguente alla sezione <runtime> del file di configurazione dell'applicazione:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>
Le app destinate a .NET Framework 4.6.1 o versioni precedenti ma in esecuzione su .NET Framework 4.6.2 o versioni successive possono abilitare le modifiche alla normalizzazione del percorso aggiungendo la riga seguente alla sezione <runtime> del file di configurazione dell'applicazione:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>