InMemoryDirectoryInfo antepone rootDir ai file
InMemoryDirectoryInfo antepone ora la directory radice specificata alla raccolta di file.
InMemoryDirectoryInfo
viene usato da MatcherExtensions.Match, che consente a Matcher di eseguire criteri di corrispondenza GLOB senza accedere al disco.
Comportamento precedente
In precedenza, ai percorsi relativi nell'argomento files
del costruttore veniva anteposta la directory di lavoro corrente. Ciò causava una dipendenza non necessaria dalla directory di lavoro corrente per un tipo che dovrebbe funzionare in memoria.
Nuovo comportamento
A partire da .NET 9, ai percorsi relativi nell'argomento files
del costruttore viene anteposta la directory radice specificata.
Versione introdotta
.NET 9 Anteprima 1
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
Sono stati riscontrati scenari di blocco con percorsi in memoria che usavano una lettera di unità diversa da quella usata dalla directory di lavoro corrente. Ad esempio, vedere il problema dotnet/runtime 93107.
Azione consigliata
Se si dipende dal comportamento precedente, modificare il codice in modo da tenere conto del fatto che ai file viene ora anteposta la directory radice. Ad esempio:
// 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