Mapowanie ukośników odwrotnych w ścieżkach plików systemu Unix
Znaki ukośnika odwrotnego (\
) są prawidłowe w nazwach katalogów i plików w systemie Unix. Począwszy od platformy .NET 8, natywne środowisko uruchomieniowe CoreCLR nie konwertuje \
już znaków na separatory katalogów — ukośniki (/
)— w systemie Unix. Ta zmiana umożliwia aplikacjom platformy .NET lokalizację na ścieżkach z nazwami, które zawierają znaki ukośnika odwrotnego. Umożliwia również natywne środowisko uruchomieniowe, dotnet
host i ilasm
narzędzia i ildasm
uzyskiwanie dostępu do plików w ścieżkach zawierających znaki ukośnika odwrotnego.
Poprzednie zachowanie
Natywne środowisko uruchomieniowe CoreCLR automatycznie konwertowało znaki ukośnika odwrotnego (\
) w ścieżkach pliku do ukośników () w/
systemie Unix.
Nowe zachowanie
Natywne środowisko uruchomieniowe CoreCLR nie konwertuje żadnych znaków ścieżki pliku w systemie Unix.
Wprowadzona wersja
.NET 8 (wersja zapoznawcza 1)
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Bez tej zmiany nie można uruchomić aplikacji platformy .NET znajdujących się w katalogach zawierających znaki ukośnika odwrotnego.
Zalecana akcja
- Użyj Path.DirectorySeparatorChar jako separatora katalogów w aplikacji zamiast na twardo do
\
lub/
. - Użyj
/
jako separatora katalogów w systemie Unix w ścieżkach plików przekazywanych dodotnet
hosta, hostowania interfejsów API iildasm
ilasm
narzędzi. - Użyj
/
jako separatora katalogów w systemie Unix w ścieżkach plików w różnychDOTNET_xxx
zmiennych środowiskowych.
Dotyczy interfejsów API
- Hostowanie interfejsów API
- 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)