Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
InMemoryDirectoryInfo ajoute maintenant le répertoire racine spécifié devant sa collection de fichiers.
InMemoryDirectoryInfo
est utilisé par MatcherExtensions.Match, ce qui permet à Matcher d’exécuter des modèles de correspondance de glob sans accéder au disque.
Comportement précédent
Auparavant, les chemins d’accès relatifs dans l’argument files
du constructeur étaient ajoutés devant le répertoire de travail actuel (CWD). Cela provoquait une dépendance inutile sur le CWD pour un type censé fonctionner en mémoire.
Nouveau comportement
À compter de .NET 9, les chemins relatifs dans l’argument files
du constructeur sont précédés du répertoire racine spécifié.
Version introduite
.NET 9 Preview 1
Type de changement cassant
Ce changement est un changement de comportement.
Raison de la modification
Il y a eu des scénarios bloqués avec des chemins d’accès en mémoire utilisant une lettre de lecteur différente de celle utilisée par le répertoire de travail actuel. Par exemple, consultez le problème dotnet/runtime 93107.
Action recommandée
Si vous dépendez du comportement précédent, ajustez votre code afin de tenir compte des fichiers qui sont désormais précédés par le répertoire racine. Par exemple:
// Since rootDir is also relative, it could've been used to filter the matching scope of `files`.
-string rootDir = "dir1";
// Now that's not possible; everything in `files` is under `root`.
+string rootDir = "root";
string[] files = ["dir1/test.0", "dir1/subdir/test.1", "dir2/test.2"];
-PatternMatchingResult result = new Matcher().AddInclude("**/*").Match(rootDir, files);
// Adjust the pattern if you want to scope down to dir1.
+PatternMatchingResult result = new Matcher().AddInclude("dir1/**/*").Match(rootDir, files);
Console.WriteLine(string.Join(", ", result.Files.Select(x => x.Path)));
// Output:
// dir1/test.0
// dir1/subdir/test.1