Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire dalle app destinate a .NET Framework 4.6.2, la normalizzazione del percorso in .NET Framework è stata modificata.
Che cos'è la normalizzazione del percorso?
La normalizzazione di un percorso comporta la modifica della stringa che identifica un percorso o un file in modo che sia conforme a un percorso valido nel 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.
Valutazione della directory relativa (
.) o della directory padre (..) in un percorso.La rimozione di caratteri specificati.
Modifiche
A partire dalle app destinate a .NET Framework 4.6.2, la normalizzazione del percorso è cambiata nei modi seguenti:
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 app destinate a .NET Framework 4.6.2 o versioni successive, queste modifiche sono attivate per impostazione predefinita. Dovrebbero migliorare le prestazioni consentendo ai metodi di accedere ai percorsi precedentemente 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 quanto segue 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 in .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>