estoy corriendo un programa muy simple, que está tratando de listar los archivos en una carpeta en la misma máquina, que se especifica utilizando el formato UNC (como se describe en http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx):¿La ruta UNC no funciona con .NET?
static string rootDir = @"\\?\d:\share\input";
static void Main(string[] args)
{
char[] invlidChars = Path.GetInvalidPathChars();
foreach (char invChar in invlidChars)
{
if (rootDir.Contains(invChar.ToString()))
{
Console.WriteLine("InvChar - {0}", invChar);
}
}
string[] matchFiles = Directory.GetFiles(rootDir);
}
Sin embargo Directory.GetFiles() no funciona y arroja una ArgumentException (que se inicia cuando la ruta es una cadena de longitud cero, contiene solo espacios en blanco o contiene uno o más caracteres no válidos tal como lo define InvalidPathChars.). Console.Writeline() no imprime nada, lo que confirma que no hay caracteres no válidos en la ruta. Obtengo la misma excepción cuando uso "\\ UNC \? \ D: \ share \ input" o "\\ UNC \? \ Machinename \ share \ input" o "\\? \ Machinename \ share \ input ".
La "d: \ share \ input" es de hecho una carpeta compartida.
¿Alguien sabe lo que podría estar mal?
Gracias!
Recomiendo esta visión general pero aún relevante de las rutas largas, la limitación de MAXPATH, el prefijo \\? \ Y otros problemas de .NET: http://blogs.msdn.com/b/bclteam/archive/2007/02/ 13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx –
Gracias por el enlace Avner SK; Esto aclara el comportamiento de .NET y Windows-API con rutas largas. – whywhywhy