490 votos

¿Cómo puedo obtener la solicitud ' ruta de s en una aplicación de consola. net?

¿Cómo encontrar la ruta de la aplicación en una aplicación de consola?

En Formularios Windows Forms, puedo usar Application.StartupPath para encontrar el actual camino, pero esto no parece estar disponible en una aplicación de consola.

675voto

Dan-o Puntos 12949

System.Reflection.Assembly.GetExecutingAssembly().Location

Combina eso con System.IO.Path.GetDirectoryName si lo que quieres es el directorio.

50voto

Mr.Mindor Puntos 991

Tienes dos opciones para encontrar el directorio de la aplicación, que elige dependerá de su propósito.

// to get the location the assembly is executing from
//(not neccesarily where the it normally resides on disk)
// in the case of the using shadow copies, for instance in NUnit tests, 
// this will be in a temp directory.
string path = System.Reflection.Assembly.GetExecutingAssembly().Location;

//To get the location the assembly normally resides on disk or the install directory
string path = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;

//once you have the path you get the directory with:
var directory = System.Io.Path.GetDirectoryName(path);

42voto

Steve Mc Puntos 1561

Probablemente un poco tarde, pero esto es digno de una mención:

Environment.GetCommandLineArgs()[0];

O, más correctamente, para obtener la ruta de acceso del directorio

System.IO.Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);

Edición:

Muy pocas personas han señalado que GetCommandLineArgs no está garantizado para devolver el nombre del programa. Ver La primera palabra en la línea de comando es el nombre del programa sólo por convención. El artículo indica que "a Pesar de que muy pocos programas de Windows use este capricho (yo no soy consciente de ninguna a mí mismo)". Así que es posible 'spoof' GetCommandLineArgs, pero estamos hablando de una aplicación de consola. La consola de aplicaciones son generalmente rápido y sucio. Así que esto encaja con mi BESO filosofía.

26voto

rocketsarefast Puntos 1167

Para cualquier persona interesada en aplicaciones web asp.net. Aquí están mis resultados de 3 diferentes métodos

protected void Application_Start(object sender, EventArgs e)
{
  string p1 = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
  string p2 = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
  string p3 = this.Server.MapPath("");
  Console.WriteLine("p1 = " + p1);
  Console.WriteLine("p2 = " + p2);
  Console.WriteLine("p3 = " + p3);
}

resultado

p1 = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\a897dd66\ec73ff95\assembly\dl3\ff65202d\29daade3_5e84cc01
p2 = C:\inetpub\SBSPortal_staging\
p3 = C:\inetpub\SBSPortal_staging

la aplicación está físicamente huyendo de "C:\inetpub\SBSPortal_staging", así que definitivamente la primera solución no es apropiada para aplicaciones web.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X