Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À partir des applications ciblant .NET Framework 4.6.2, la normalisation du chemin d’accès dans .NET Framework a changé.
Qu’est-ce que la normalisation du chemin ?
La normalisation d’un chemin implique la modification de la chaîne qui identifie un chemin d’accès ou un fichier afin qu’elle soit conforme à un chemin valide sur le système d’exploitation cible. La normalisation implique généralement :
Canonicalisation des séparateurs de composants et de répertoires.
L’application du répertoire actuel à un chemin d’accès relatif.
Évaluation du répertoire relatif (
.) ou du répertoire parent (..) dans un chemin d’accès.Suppression des caractères spécifiés.
Modifications
À partir des applications ciblant le .NET Framework 4.6.2, la normalisation des chemins a été modifiée comme suit :
Le runtime se reporte à la fonction GetFullPathName du système d’exploitation pour normaliser les chemins d’accès.
La normalisation n’implique plus de découper la fin des segments d’annuaire (par exemple, un espace à la fin d’un nom de répertoire).
Prise en charge de la syntaxe du chemin d’appareil avec une confiance totale, y compris
\\.\et, pour les API d’E/S de fichiers dans mscorlib.dll,\\?\.Le runtime ne valide pas les chemins de syntaxe de l’appareil.
L’utilisation de la syntaxe de l’appareil pour accéder à d’autres flux de données est prise en charge.
Répercussion
Pour les applications qui ciblent .NET Framework 4.6.2 ou version ultérieure, ces modifications sont activées par défaut. Ils doivent améliorer les performances tout en permettant aux méthodes d’accéder aux chemins précédemment inaccessibles.
Les applications qui ciblent .NET Framework 4.6.1 et versions antérieures, mais qui s’exécutent sous .NET Framework 4.6.2 ou version ultérieure ne sont pas affectées par cette modification.
Atténuation
Les applications qui ciblent .NET Framework 4.6.2 ou version ultérieure peuvent refuser cette modification et utiliser la normalisation héritée en ajoutant ce qui suit à la <section runtime> du fichier de configuration de l’application :
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>
Les applications qui ciblent .NET Framework 4.6.1 ou version antérieure, mais qui s’exécutent sur .NET Framework 4.6.2 ou version ultérieure peuvent activer les modifications apportées à la normalisation du chemin d’accès en ajoutant la ligne suivante à la <section runtime> du fichier .configuration d’application :
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>