¿Cómo averiguo en qué directorio se ejecuta mi aplicación de consola con C #?
c#
.net
console-application
John Sheehan
fuente
fuente
System.AppContext.BaseDirectory
.Dependiendo de los derechos otorgados a su aplicación, si la copia de sombra está en efecto o no y otras opciones de invocación y despliegue, diferentes métodos pueden funcionar o producir diferentes resultados, por lo que tendrá que elegir su arma sabiamente. Habiendo dicho eso, todo lo siguiente producirá el mismo resultado para una aplicación de consola totalmente confiable que se ejecuta localmente en la máquina donde reside:
Console.WriteLine( Assembly.GetEntryAssembly().Location ); Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath ); Console.WriteLine( Assembly.GetEntryAssembly().Location ); Console.WriteLine( Environment.GetCommandLineArgs()[0] ); Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );
Deberá consultar la documentación de los miembros anteriores para ver los permisos exactos necesarios.
fuente
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Ubicación)
fuente
En .NET, puede utilizar
System.Environment.CurrentDirectory
para obtener el directorio desde el que se inició el proceso.System.Reflection.Assembly.GetExecutingAssembly().Location
le dirá la ubicación del ensamblado que se está ejecutando actualmente (eso solo es interesante si el ensamblado que se está ejecutando actualmente se carga desde un lugar diferente a la ubicación del ensamblado donde comenzó el proceso).fuente
En Windows (no estoy seguro de Unix, etc.) es el primer argumento en la línea de comandos.
En C / C ++ primer elemento en argv *
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
fuente
Application.StartUpPath;
fuente
Digamos que el nombre del proyecto de la aplicación de la consola central de .Net es DataPrep.
Obtener el directorio base del proyecto:
Salida: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory: string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\")); Console.WriteLine(ProjectDirPath);
Salida: ~ DataPrep \
fuente
Úselo
AppContext.BaseDirectory
para .net5.fuente