Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
InMemoryDirectoryInfo stellt jetzt das angegebene Stammverzeichnis den zugehörigen Dateien voran.
InMemoryDirectoryInfo wird von MatcherExtensions.Match verwendet, wodurch Matcher Globabgleichsmuster ohne Zugriff auf den Datenträger ausführen kann.
Vorheriges Verhalten
Zuvor wurden relative Pfade im argument files des -Konstruktors dem aktuellen Arbeitsverzeichnis (CWD, Current Working Directory) vorangestellt. Das führte zu einer unnötigen Abhängigkeit vom CWD für einen Typ, der im Arbeitsspeicher agieren soll.
Neues Verhalten
Ab .NET 9 werden relative Pfade im files-Argument des Konstruktors dem angegebenen Stammverzeichnis vorangestellt.
Eingeführte Version
.NET 9 Preview 1
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Es gab blockierte Szenarien mit speicherinternen Pfaden mit einem anderen Laufwerkbuchstaben als dem, der vom aktuellen Arbeitsverzeichnis verwendet wird. Siehe z. B. dotnet/runtime Issue 93107.
Empfohlene Aktion
Wenn Sie vom vorherigen Verhalten abhängig sind, passen Sie Ihren Code so an, dass die Dateien jetzt dem Stammverzeichnis vorangestellt werden. Beispiel:
// 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