Una opción sería hacer System.IO.Directory.GetParent () varias veces. ¿Existe una forma más elegante de subir algunas carpetas desde donde reside el ensamblado en ejecución?
Lo que intento hacer es encontrar un archivo de texto que resida en una carpeta encima de la carpeta de la aplicación. Pero el ensamblaje en sí está dentro del contenedor, que son algunas carpetas dentro de la carpeta de la aplicación.
c#
.net
console-application
desarrollador747
fuente
fuente

Directory.SetCurrentDirectory(@"..\..\..\..");Respuestas:
Otra forma sencilla es hacer esto:
Nota Esto sube dos niveles. El resultado sería:
newPath = @"C:\Folder1\Folder2\";fuente
Path.Combinecuando está agregando barra invertida manualmente de todos modos. Considere usar en suPath.Combine(path, "..", "..")lugar.si c: \ carpeta1 \ carpeta2 \ carpeta3 \ bin es la ruta, el siguiente código devolverá la ruta de la carpeta base de la carpeta bin
es decir, c: \ carpeta1 \ carpeta2 \ carpeta3
si desea la ruta folder2, puede obtener el directorio por
luego obtendrá la ruta como c: \ folder1 \ folder2 \
fuente
Puede usar
..\pathpara subir un nivel,..\..\pathpara subir dos niveles desde el camino.También puedes usar la
Pathclase.Clase de ruta de C #
fuente
Esto es lo que mejor funcionó para mí:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));Obtener la ruta 'correcta' no fue el problema, agregar '../' obviamente hace eso, pero después de eso, la cadena dada no se puede usar, porque simplemente agregará el '../' al final. Rodearlo con
Path.GetFullPath()le dará el camino absoluto, haciéndolo utilizable.fuente
El siguiente método busca un archivo que comienza con la ruta de inicio de la aplicación (carpeta * .exe). Si el archivo no se encuentra allí, se buscan las carpetas principales hasta que se encuentra el archivo o se llega a la carpeta raíz.
nullse devuelve si no se encontró el archivo.Nota:
Application.StartupPathgeneralmente se usa en aplicaciones WinForms, pero también funciona en aplicaciones de consola; sin embargo, deberá establecer una referencia alSystem.Windows.Formsensamblaje. Puede reemplazarApplication.StartupPathporPath.GetDirectoryName(Assembly.GetExecutingAssembly().Location)si lo prefiere.fuente
¿Quizás podría usar una función si desea declarar el número de niveles y ponerlo en una función?
Y podrías llamarlo así:
fuente
C#
fuente
esto puede ayudar
fuente
Tengo algunos directorios virtuales y no puedo usar métodos de directorio. Entonces, hice una función simple de división / unión para aquellos interesados. Aunque no tan seguro.
Por lo tanto, si desea mover hasta 4, sólo tiene que cambiar la
1a4y añadir algunos controles a excepciones evitar.fuente
Si conoce la carpeta a la que desea navegar, busque el índice y luego la subcadena.
fuente
a, por ejemplo? ¿Qué pasa si el camino se ve asíC:\Folderame3\Folderame2\Folderame\...?