Omvänt snedstrecksmappning i Unix-filsökvägar
Omvänt snedstreck (\
) tecken är giltiga i katalog- och filnamn på Unix. Från och med .NET 8 konverterar \
den interna CoreCLR-körningen inte längre tecken till katalogavgränsare – snedstreck (/
)– i Unix. Den här ändringen gör att .NET-program kan finnas på sökvägar med namn som innehåller omvänt snedstreck. Det gör också att den interna körningen, dotnet
värden och verktygen ilasm
och ildasm
kan komma åt filer på sökvägar som innehåller omvänt snedstreck.
Tidigare beteende
Den interna CoreCLR-körningen konverterade automatiskt omvänt snedstreck (\
) tecken i filsökvägar till snedstreck (/
) i Unix.
Nytt beteende
Den interna CoreCLR-körningen konverterar inte några filsökvägstecken i Unix.
Version introducerad
Förhandsversion 1 av .NET 8
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Utan den här ändringen startar inte .NET-appar som finns i kataloger som innehåller omvänt snedstreck.
Rekommenderad åtgärd
- Använd Path.DirectorySeparatorChar som katalogavgränsare i din app i stället för att hårdkoda den till
\
eller/
. - Använd
/
som katalogavgränsare på Unix i filsökvägar som du skickar till värden, som är värd fördotnet
API:er ochilasm
verktygildasm
. - Använd
/
som katalogavgränsare i Unix i filsökvägar i olikaDOTNET_xxx
miljövariabler.
Berörda API:er
- Värd-API:er
- 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)