Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
InMemoryDirectoryInfo ahora antepone el directorio raíz especificado a su colección de archivos.
InMemoryDirectoryInfo
usa MatcherExtensions.Match, lo que permite a Matcher ejecutar patrones de coincidencia de glob sin tener acceso al disco.
Comportamiento anterior
Anteriormente, las rutas de acceso relativas del argumento files
del constructor se anteponían al directorio de trabajo actual (CWD). Esto provocaba una dependencia innecesaria del CWD para un tipo que se supone que funciona en memoria.
Nuevo comportamiento
A partir de .NET 9, las rutas de acceso relativas del argumento files
del constructor se anteponen al directorio raíz especificado.
Versión introducida
Versión preliminar 1 de .NET 9
Tipo de cambio disruptivo
Este es un cambio de comportamiento.
Motivo del cambio
Se daban bloqueos con rutas de acceso en memoria al usar una letra de unidad distinta de la empleada por el directorio de trabajo actual. Por ejemplo, consulte dotnet/runtime issue 93107.
Acción recomendada
Si dependía del comportamiento anterior, ajuste el código para que tenga en cuenta los archivos que ahora se anteponen al directorio raíz. Por ejemplo:
// 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