Zuordnung des umgekehrten Schrägstrichs in Unix-Dateipfaden
Umgekehrte Schrägstriche (\
) sind in Verzeichnis- und Dateinamen unter Unix gültig. Ab .NET 8 konvertiert die native CoreCLR-Runtime unter Unix die Zeichen \
nicht mehr in Verzeichnistrennzeichen – Schrägstriche (/
). Diese Änderung ermöglicht es, dass .NET-Anwendungen in Pfaden platziert werden, deren Namen umgekehrte Schrägstriche enthalten. Außerdem können die native Runtime, der dotnet
-Host und die ilasm
- und ildasm
-Tools auf Dateien in Pfaden zugreifen, die umgekehrte Schrägstriche enthalten.
Vorheriges Verhalten
Die native CoreCLR-Runtime konvertierte unter Unix automatisch umgekehrte Schrägstriche (\
) in Dateipfaden in Schrägstriche (/
).
Neues Verhalten
Die native CoreCLR-Runtime konvertiert unter Unix keine Dateipfadzeichen.
Eingeführt in Version
.NET 8 Preview 1
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Ohne diese Änderung können .NET-Apps in Verzeichnissen, die umgekehrte Schrägstriche enthalten, nicht gestartet werden.
Empfohlene Maßnahme
- Verwenden Sie Path.DirectorySeparatorChar als Verzeichnistrennzeichen in Ihrer App, anstatt für sie in
\
oder/
die Hartcodierung vorzunehmen. - Verwenden Sie
/
als Verzeichnistrennzeichen unter Unix in Dateipfaden, die Sie an dendotnet
-Host, Host-APIs sowieilasm
- undildasm
-Tools übergeben. - Verwenden Sie
/
als Verzeichnistrennzeichen unter Unix in Dateipfaden in verschiedenenDOTNET_xxx
-Umgebungsvariablen.
Betroffene APIs
- Hosting-APIs
- 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)