Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
"Sürücünün geçerli dizini" şeklinde bir yol bağımsız değişkeni kullanılarak alınan dosya sistemi girdileri, örneğin, C:birleştirilerek directory path + separator + entry namehatalı bir şekilde oluşturulmuştur. Girdilerin doğru yolunu döndürmek için, ayırıcı artık bu tür yollarla eklenmez.
Önceki davranış
Daha önce, numaralandırılmış dosya sistemi girdilerinin sürücünün kökünde olduğu izlenimini veren bir ayırıcı karakter eklenmişti.
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);
}
Bu kod parçacığının çalıştırılmasından elde edilen çıkış aşağıdaki gibidir.
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
Yeni davranış
.NET 8 ve sonraki sürümlerde aynı kod parçacığını çalıştırmak, her yolda ayırıcı karakter olmadan çıkış üretir.
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
Sürüm kullanıma sunulmuştur
.NET 8
Kesinti yaratan değişiklik türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Kullanıcılar önceki davranışın yanlış olduğunu bildirdi. Bu aynı zamanda .NET Framework'ten gelen bir regresyondu.
Önerilen eylem
gibi C:yolların numaralandırmasını kullanan bir Windows kullanıcısıysanız, uygulamanızın G/Ç işlemlerini yeniden değerlendirmeniz gerekir. Bu, üretimde kullanılma olasılığı düşük olan olağan dışı bir senaryodur. Bunun yerine geçerli dizini listelemek isteyen kullanıcıların çoğu bunu kullanır Environment.CurrentDirectory .
Etkilenen API'ler
- 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)