Bieżąca wyliczenie ścieżki katalogu dysku
Wpisy systemu plików uzyskane przy użyciu argumentu ścieżki w kształcie "bieżącego katalogu dysku", na przykład , C:
zostały niepoprawnie utworzone przez połączenie directory path + separator + entry name
. Aby zwrócić poprawną ścieżkę dla wpisów, separator nie jest już dodawany z takimi ścieżkami.
Poprzednie zachowanie
Wcześniej dodano znak separatora, tak aby wyliczone wpisy systemu plików znajdowały się w katalogu głównym dysku.
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);
}
Dane wyjściowe z uruchamiania tego fragmentu kodu były następujące.
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
Nowe zachowanie
Uruchomienie tego samego fragmentu kodu na platformie .NET 8 i nowszych wersjach powoduje wygenerowanie danych wyjściowych bez znaku separatora w każdej ścieżce.
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
Wprowadzona wersja
.NET 8
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Użytkownicy zgłosili, że poprzednie zachowanie było nieprawidłowe. Była to również regresja z programu .NET Framework.
Zalecana akcja
Jeśli jesteś użytkownikiem systemu Windows, który opiera się na wyliczaniu ścieżek, takich jak C:
, należy ponownie ocenić operacje we/wy aplikacji. Jest to nietypowy scenariusz, który prawdopodobnie nie będzie używany w środowisku produkcyjnym. Większość użytkowników, którzy chcą zamiast tego wyliczyć bieżący katalog Environment.CurrentDirectory .
Dotyczy interfejsów API
- 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)