Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As entradas do sistema de arquivos obtidas usando um argumento de caminho na forma de um "diretório atual da unidade", por exemplo, C:, foram formadas incorretamente pela combinação de directory path + separator + entry name. Para retornar o caminho correto para as entradas, o separador não é mais adicionado com esses caminhos.
Comportamento anterior
Anteriormente, um caractere separador era adicionado de modo que as entradas do sistema de arquivos enumerados pareciam estar na raiz da unidade.
string pathToEnumerate = "C:";
Console.WriteLine($"Full path of \"{pathToEnumerate}\" is {Path.GetFullPath(pathToEnumerate)}.");
Path.GetFullPath(pathToEnumerate);
Console.WriteLine($"Enumerating files and folders in \"{pathToEnumerate}\".");
foreach (string entry in Directory.GetFileSystemEntries(pathToEnumerate))
{
Console.WriteLine(entry);
}
A saída da execução desse snippet de código foi a seguinte.
Full path of "C:" is C:\Users\myalias\consoleapps\Program
Enumerating files and folders in "C:".
C:\Program.csproj
C:\Program.sln
C:\bin
C:\obj
C:\Program.cs
Novo comportamento
A execução do mesmo trecho de código no .NET 8 e em versões posteriores produz uma saída sem um caractere separador em cada caminho.
Full path of "C:" is C:\Users\myalias\consoleapps\Program.
Enumerating files and folders in "C:".
C:Program.csproj
C:Program.sln
C:bin
C:obj
C:Program.cs
Versão introduzida
.NET 8
Tipo de mudança disruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Os usuários relataram que o comportamento anterior estava incorreto. Também foi uma regressão do .NET Framework.
Ação recomendada
Se você for um usuário do Windows que depende da enumeração de caminhos como C:, você deverá reavaliar as operações de E/S do aplicativo. Esse é um cenário incomum que é improvável de ser usado na produção. Em vez disso, a maioria dos usuários que desejam enumerar o diretório atual usa Environment.CurrentDirectory .
APIs afetadas
- System.IO.Directory.EnumerateFiles
- System.IO.Directory.EnumerateDirectories
- System.IO.Directory.EnumerateFileSystemEntries
- System.IO.Directory.GetFiles
- System.IO.Directory.GetDirectories
- System.IO.Directory.GetFileSystemEntries
- System.IO.DirectoryInfo.EnumerateFiles
- System.IO.DirectoryInfo.EnumerateDirectories
- System.IO.DirectoryInfo.EnumerateFileSystemInfos
- System.IO.DirectoryInfo.GetFiles
- System.IO.DirectoryInfo.GetDirectories
- System.IO.DirectoryInfo.GetFileSystemInfos
- FileSystemEnumerable<TResult>(String, FileSystemEnumerable<TResult>.FindTransform, EnumerationOptions)