Dela via


Enhetens aktuella katalogsökvägsuppräkning

Filsystemposter som hämtats med hjälp av ett sökvägsargument i form av en "enhetens aktuella katalog", till exempel C:, skapades felaktigt genom att kombinera directory path + separator + entry name. För att returnera rätt sökväg för posterna läggs avgränsaren inte längre till med sådana sökvägar.

Tidigare beteende

Tidigare lades ett avgränsartecken till så att de uppräknade filsystemposterna verkade finnas i enhetens rot.

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

Utdata från att köra det här kodfragmentet var följande.

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

Nytt beteende

Om du kör samma kodfragment i .NET 8 och senare versioner genereras utdata utan ett avgränsartecken i varje sökväg.

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

Version introducerad

.NET 8

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Användare rapporterade att det tidigare beteendet var felaktigt. Det var också en regression från .NET Framework.

Om du är en Windows-användare som förlitar sig på uppräkning av sökvägar som C:bör du utvärdera programmets I/O-åtgärder igen. Det här är ett ovanligt scenario som sannolikt inte kommer att användas i produktion. De flesta användare som vill räkna upp den aktuella katalogen använder Environment.CurrentDirectory i stället.

Berörda API:er