Delen via


De huidige map van het station opsommen

Bestandssysteemvermeldingen die zijn verkregen met behulp van een padargument in de vorm van de 'huidige map van een station', bijvoorbeeld, C:, waren onjuist gevormd door te combineren met directory path + separator + entry name. Om het juiste pad voor de vermeldingen terug te geven, wordt het scheidingsteken niet meer toegevoegd bij dergelijke paden.

Vorig gedrag

Eerder werd een scheidingsteken toegevoegd, zodat de genummerde bestandssysteemvermeldingen in de root van het station verschenen.

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

De uitvoer van dit codefragment is als volgt.

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

Nieuw gedrag

Het uitvoeren van hetzelfde codefragment in .NET 8 en latere versies produceert uitvoer zonder scheidingsteken in elk pad.

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

Geïntroduceerde versie

.NET 8

Type van brekende verandering

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Gebruikers hebben gemeld dat het vorige gedrag onjuist was. Het was ook een regressie van .NET Framework.

Als u een Windows-gebruiker bent die afhankelijk is van inventarisatie van paden zoals C:, moet u de I/O-bewerkingen van uw toepassing opnieuw evalueren. Dit is een ongebruikelijk scenario dat waarschijnlijk niet in productie zal worden gebruikt. De meeste gebruikers willen liever de huidige directory inventariseren met Environment.CurrentDirectory.

Betreffende API's