Backslash-toewijzing in Unix-bestandspaden
Backslashtekens (\
) zijn geldig in map- en bestandsnamen op Unix. Vanaf .NET 8 converteert \
de systeemeigen CoreCLR-runtime geen tekens meer naar adreslijstscheidingstekens ( slashes (/
)) op Unix. Met deze wijziging kunnen .NET-toepassingen zich bevinden op paden met namen die backslash-tekens bevatten. Hiermee kunnen ook de systeemeigen runtime, dotnet
host en hulpprogramma's ilasm
ildasm
toegang krijgen tot bestanden op paden die backslash-tekens bevatten.
Vorig gedrag
De systeemeigen CoreCLR-runtime converteert automatisch backslash-tekens (\
) in bestandspaden naar slashes (/
) op Unix.
Nieuw gedrag
De systeemeigen CoreCLR-runtime converteert geen bestandspadtekens op Unix.
Versie geïntroduceerd
.NET 8 Preview 1
Type wijziging die fouten veroorzaken
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Zonder deze wijziging kunnen .NET-apps in mappen met backslash-tekens niet worden gestart.
Aanbevolen actie
- Gebruik Path.DirectorySeparatorChar dit als mapscheidingsteken in uw app in plaats van deze te coderen in
\
of/
. - Gebruik
/
als mapscheidingsteken op Unix in bestandspaden die u doorgeeft aan dedotnet
host, het hosten van API's enilasm
ildasm
hulpprogramma's. - Gebruik
/
als mapscheidingsteken op Unix in bestandspaden in verschillendeDOTNET_xxx
omgevingsvariabelen.
Betrokken API's
- Api's hosten
- 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)