Mapeamento de barra invertida em caminhos de arquivo UNIX
Caracteres de barra invertida (\
) são válidos em diretórios e nomes de arquivo no Unix. Começando no .NET 8, o runtime nativo do CoreCLR não converte mais caracteres \
em separadores de diretório — barras (/
)— no Unix. Essa alteração permite que aplicativos .NET sejam localizados em caminhos com nomes que contêm caracteres de barra invertida. Também permite que o runtime nativo, o host dotnet
e as ferramentas ilasm
e ildasm
acessem arquivos em caminhos que contêm caracteres de barra invertida.
Comportamento anterior
O runtime do CoreCLR nativo convertia automaticamente caracteres de barra invertida (\
) nos caminhos de arquivo em barras (/
) no Unix.
Novo comportamento
O runtime do CoreCLR nativo não converte caracteres de caminho de arquivo no Unix.
Versão introduzida
.NET 8 versão prévia 1
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Sem essa alteração, aplicativos .NET em diretórios que contêm caracteres de barra invertida não são iniciados.
Ação recomendada
- Use Path.DirectorySeparatorChar como separador de diretório em seu aplicativo em vez de codificá-lo em
\
ou/
. - Use
/
como separador de diretório no Unix nos caminhos de arquivo que você passa para o hostdotnet
, APIs de hospedagem e as ferramentasilasm
eildasm
. - Use
/
como separador de diretório no Unix em caminhos de arquivo em diversasDOTNET_xxx
variáveis de ambiente.
APIs afetadas
- APIs de hospedagem
- 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)