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 dans la forme du répertoire actif d’un lecteur, par exemple, C:, ont été incorrectement formées en combinant directory path + separator + entry name. Pour renvoyer le chemin d’accès correct pour les entrées, le séparateur n’est plus ajouté à ces chemins.

Comportement précédent

Auparavant, un caractère de séparation a été ajouté afin que les entrées de système de fichiers énumérées apparaissent 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 les versions ultérieures produit un résultat 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 de la modification

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

Si vous êtes un utilisateur Windows qui s’appuie sur l’énumération des 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 qui n’est pas susceptible d’être utilisé en production. La plupart des utilisateurs qui souhaitent énumérer l’annuaire actif utilisent Environment.CurrentDirectory à la place.

API affectées