Mappage de barre oblique inverse dans les chemins de fichiers Unix
Les barres obliques inverses (\
) sont valides dans les noms de répertoire et de fichier sur Unix. À compter de .NET 8, le runtime CoreCLR natif ne convertit plus les caractères \
en séparateurs de répertoires (barres obliques (/
)) sur Unix. Ce changement permet aux applications .NET d’être sur des chemins avec des noms qui contiennent des barres obliques inverses. Il permet également au runtime natif, hôte dotnet
, et aux outils ilasm
et ildasm
d’accéder aux fichiers sur des chemins qui contiennent des barres obliques inverses.
Comportement précédent
Le runtime CoreCLR natif convertissait automatiquement les barres obliques inverses (\
) dans les chemins de fichier en barres obliques (/
) sur Unix.
Nouveau comportement
Le runtime CoreCLR natif ne convertit aucun caractère de chemin de fichier sur Unix.
Version introduite
.NET 8 Préversion 1
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Sans ce changement, les applications .NET situées dans des répertoires qui contiennent des barres obliques inverses ne peuvent pas démarrer.
Action recommandée
- Utilisez Path.DirectorySeparatorChar comme séparateur de répertoires dans votre application au lieu de le coder en dur comme
\
ou/
. - Utilisez
/
comme séparateur de répertoires sur Unix dans les chemins de fichier que vous passez à l’hôtedotnet
, aux API d’hébergement, et aux outilsilasm
etildasm
. - Utilisez
/
comme séparateur de répertoires sur Unix dans les chemins de fichier de diversesDOTNET_xxx
variables d’environnement.
API affectées
- API d’hébergement
- System.Runtime.InteropServices.DllImportAttribute.Value
- System.Runtime.InteropServices.NativeLibrary.Load
- System.Runtime.InteropServices.NativeLibrary.TryLoad
- System.Reflection.Assembly.LoadFrom
- System.Reflection.Assembly.LoadFile
- System.Reflection.Assembly.UnsafeLoadFrom(String)
- System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String)
- System.Runtime.Loader.AssemblyLoadContext.LoadFromNativeImagePath(String, String)
- System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDllFromPath(String)