Partager via


Énumération du chemin d’accès au répertoire actif du lecteur

Les entrées du système de fichiers obtenues à l’aide d’un argument de chemin d’accès sous forme de « répertoire actif d’un lecteur », par exemple C:, ont été correctement formées en combinant directory path + separator + entry name. Pour retourner le chemin d’accès correct pour les entrées, le séparateur n’est plus ajouté avec ces chemins.

Comportement précédent

Auparavant, un caractère de séparation était ajouté de sorte que les entrées de système de fichiers énumérées apparaissaient dans la racine du lecteur.

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

La sortie de l’exécution de cet extrait de code était la suivante.

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

Nouveau comportement

L’exécution du même extrait de code dans .NET 8 et ultérieur produit une sortie sans caractère de séparation dans chaque chemin d’accès.

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 introduite

.NET 8

Type de changement cassant

Ce changement est un changement de comportement.

Raison du changement

Les utilisateurs ont signalé que le comportement précédent était incorrect. Il s’agissait également d’une régression par rapport à .NET Framework.

Si vous êtes un utilisateur Windows qui s’appuie sur l’énumération de chemins d’accès comme C:, vous devez réévaluer les opérations d’E/S de votre application. Il s’agit d’un scénario inhabituel peu susceptible d’être utilisé en production. La plupart des utilisateurs qui souhaitent énumérer le répertoire actif utilisent plutôt Environment.CurrentDirectory.

API affectées