Como faço para descobrir em qual diretório meu aplicativo de console está sendo executado com C #?
c#
.net
console-application
John Sheehan
fonte
fonte
System.AppContext.BaseDirectory
.Dependendo dos direitos concedidos ao seu aplicativo, se a cópia de sombra está em vigor ou não e outras opções de invocação e implantação, métodos diferentes podem funcionar ou produzir resultados diferentes, portanto, você terá que escolher sua arma com sabedoria. Dito isso, todos os itens a seguir produzirão o mesmo resultado para um aplicativo de console totalmente confiável que é executado localmente na máquina onde 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 );
Você precisará consultar a documentação dos membros acima para ver as permissões exatas necessárias.
fonte
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Localização)
fonte
No .NET, você pode usar
System.Environment.CurrentDirectory
para obter o diretório a partir do qual o processo foi iniciado.System.Reflection.Assembly.GetExecutingAssembly().Location
informará a localização do assembly em execução no momento (isso só é interessante se o assembly em execução no momento for carregado de algum lugar diferente do local do assembly onde o processo foi iniciado).fonte
No Windows (não tenho certeza sobre Unix, etc.), é o primeiro argumento na linha de comando.
Em C / C ++ primeiro item em argv *
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
fonte
Application.StartUpPath;
fonte
Digamos que o nome do seu projeto de aplicativo de console principal .Net seja DataPrep.
Obtenha o diretório base do projeto:
Saída: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory: string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\")); Console.WriteLine(ProjectDirPath);
Saída: ~ DataPrep \
fonte
Use
AppContext.BaseDirectory
para .net5.fonte