Averiguar el path de ejecución de una aplicación con C#
Hoy toca una cosa sencillita pero que suele ser necesaria al programar aplicaciones de escritorio, se trata de averiguar desde qué ruta se está ejecutando la aplicación. Esto habitualmente es una tarea sencilla en cualquier lenguaje, por ejemplo ExtractFilePath(Application.ExeName)
en Delphi, App.Path
en versiones anteriores de Visual Basic, o System.getProperty("user.dir")
en Java, sin embargo en .NET, pese a seguir siendo sencilla, es algo más difícil de recordar de memoria.
string path = System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase ); |
Bueno, más sencillo es usar Application.StartupPath.
Pues tienes razón Jose, es mucho más fácil así 😉 se nota que hacía mucho que no programaba aplicaciones windows!!! La forma que indico la saqué hace tiempo de un artículo de msdn, mirando como obtener esta ruta con el .NET Compact Framework para unas pruebas que hice.
En cualquier caso he aprovechado para mirar un poco la referencia de .NET, y por lo que veo respecto al método GetExecutingAssembly indica que devuelve el assembly que se está ejecutando, lo cual no tengo claro si se refiere al de la aplicación inicial, o al assembly que contiene el código desde el que se realiza la llamada, en cuyo caso no nos daría el path de la aplicación sino del assembly, que bien podría ser una dll que forme parte de la aplicación… me inclino por esto segundo, así que lo tendré en cuenta…
No necesariamente aplicaciones Windows, en Mono si no recuerdo mal también vale ;). Donde no vale es en el CF donde si tienes que recurrir al método GetExecutingAssembly. Un saludo
Gracias compadre te estare agradecido
Hola, Pues les cuento que efectivamente para el Compact Framework (CF) no funciona el «Application.StartupPath» así que fue de mucha ayuda para mi la forma de obtener el path que se muestra en el artículo.
Gracias!!!
Hola, en una aplicación de escritorio de windows, C# provee Environment.CurrentDirectory para obtener el directorio donde está corriendo la aplicación. Es muy sencillo de recordar y funciona de perlas.
¡Saludos!
Pues quiero agradecer publicamente por que este tipo de notas en la red son muy utiles y muy prácticas en la vida cotidiana del programador, siento que es muy útil agradecer a las personas que realizaron esta pagina y a los participantes en el foro…. saludos y GRACIAS !!!!!!!
Hola, Como estan?
Tengan cuidado si usan Environment.CurrentDirectory,, ya que si usan una venta de DialogOpenFile, el directorio actual les puede cambiar y no apuntar mas al directorio en donde esta la aplicacion.
Por eso yo use este ejemplo del articulo que me vino muy bien.
Muchas gracias.
Ok. está muy bien.
Pero me gustaría saber cómo averiguar el directorio raíz de referencia en una aplicación web, ya que no puede instanciarse System.Windows…..
Gracias.
Bueno vaya que los aportes que nos dan son de lo bueno eh…
Mile Gracias…
Esta instrucción me quedó como anillo al dedo:
Dim path As String = System.AppDomain.CurrentDomain.BaseDirectory
Excelente aporte:
Cuidado al usar:
string path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
Se me eliminabanalgunas variables de la Session
Usando System.AppDomain.CurrentDomain.BaseDirectory todo trabaja al pelo.
Hola que tal:
Oigan y si la aplicacion de la que deseo saber su direccion desde donde se está trabajando es portable???
Buen dia
el problema que tengo es que cuando publico mi formulario en la web, y a la hora de adjuntar un archivo no me muestra mi Ruta del
archivo de donde se esta descargando me obtiene la ruta del servidor
ejemplo
esta es la ruta de donde descargo el archivo
C:\Users\moises.corrales\Documents\DICO1DIC15\CFD_VABR25264.xml
y la hora de ejecutarse esta linea de mi código
DirectoryInfo dir = new DirectoryInfo(Directory.GetCurrentDirectory());
me muestra la siguiente Ruta espero y me puedan ayudar como hacerle para obtener la ruta original de mi archivo
c:\windows\system32\inetsrv\CFD_VABR25264.xml