Mapping delle barre rovesciate nei percorsi di file Unix
I caratteri barra rovesciata (\
) sono validi nei nomi di directory e file in Unix. A partire da .NET 8, il runtime CoreCLR nativo non converte più caratteri \
in separatori di directory - barre (/
) - in Unix. Questa modifica consente alle applicazioni .NET di trovarsi nei percorsi con nomi contenenti caratteri barra rovesciata. Consente inoltre al runtime nativo, all'host dotnet
e agli strumenti ilasm
e ildasm
di accedere ai file nei percorsi che contengono caratteri barra rovesciata.
Comportamento precedente
Il runtime CoreCLR nativo converte automaticamente i caratteri barra rovesciata (\
) nei percorsi di file in barre (/
) in Unix.
Nuovo comportamento
Il runtime CoreCLR nativo non converte caratteri di percorso di file in Unix.
Versione con introduzione
.NET 8 anteprima 1
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
Senza questa modifica, le app .NET che si trovano nelle directory che contengono caratteri barra rovesciata non vengono avviate.
Azione consigliata
- Usare Path.DirectorySeparatorChar come separatore di directory nell'app invece di impostare il valore come hardcoded in
\
o/
. - Usare
/
come separatore di directory in Unix nei percorsi di file passati all'hostdotnet
, alle API di hosting e agli strumentiilasm
eildasm
. - Usare
/
come separatore di directory in Unix nei percorsi di file in varieDOTNET_xxx
variabili di ambiente.
API interessate
- API di hosting
- 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)