Share via


드라이브의 현재 디렉터리 경로 열거형

"드라이브의 현재 디렉터리" 형태의 경로 인수를 사용하여 가져오는 파일 시스템 항목(예: C:)이 directory path + separator + entry name을 결합하여 잘못 구성되었습니다. 항목에 대한 올바른 경로를 반환하기 위해 해당 경로에는 더 이상 구분 기호가 추가되지 않습니다.

이전 동작

이전에는 열거된 파일 시스템 항목이 드라이브 루트에 있는 것처럼 보이도록 구분 문자가 추가되었습니다.

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);
}

이 코드 조각을 실행한 결과는 다음과 같습니다.

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

새 동작

.NET 9 이상 버전에서 동일한 코드 조각을 실행하면 각 경로에 구분 문자가 없는 출력이 생성됩니다.

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

도입된 버전

.NET 8

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

사용자들이 이전 동작이 올바르지 않다고 보고했습니다. 이는 .NET Framework의 회귀이기도 했습니다.

C:와 같은 경로 열거형에 의존하는 Windows 사용자인 경우 애플리케이션의 I/O 작업을 다시 평가해야 합니다. 이는 프로덕션에서 사용되지 않을 것 같은 특이한 시나리오입니다. 현재 디렉터리를 열거하려는 대부분의 사용자는 대신 Environment.CurrentDirectory를 사용합니다.

영향을 받는 API