드라이브의 현재 디렉터리 경로 열거형
"드라이브의 현재 디렉터리" 형태의 경로 인수를 사용하여 가져오는 파일 시스템 항목(예: 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
- 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)
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기