Comment savoir dans quel répertoire s'exécute mon application console?


Réponses:


160

Pour obtenir le répertoire où se trouve le fichier .exe:

AppDomain.CurrentDomain.BaseDirectory

Pour obtenir le répertoire courant:

Environment.CurrentDirectory

2
Merci. Aide lorsque le C # .exe est dans un dossier mais est appelé à partir d'un autre dossier (par exemple: lorsqu'il est sur le système PATH)
DeepSpace101

14
Pour .NET Core, c'est le cas System.AppContext.BaseDirectory.
NightOwl888

15

Selon les droits accordés à votre application, que le cliché instantané soit en vigueur ou non et d'autres options d'invocation et de déploiement, différentes méthodes peuvent fonctionner ou donner des résultats différents, vous devrez donc choisir votre arme judicieusement. Cela dit, tous les éléments suivants donneront le même résultat pour une application console entièrement fiable qui est exécutée localement sur la machine où elle réside:

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 );

Vous devrez consulter la documentation des membres ci-dessus pour voir les autorisations exactes nécessaires.



3

Dans .NET, vous pouvez utiliser System.Environment.CurrentDirectorypour obtenir le répertoire à partir duquel le processus a été lancé.
System.Reflection.Assembly.GetExecutingAssembly().Locationvous indiquera l'emplacement de l'assembly en cours d'exécution (ce n'est intéressant que si l'assembly en cours d'exécution est chargé à partir d'un endroit différent de l'emplacement de l'assembly où le processus a commencé).


1

Sous Windows (pas sûr d'Unix, etc.) c'est le premier argument de la ligne de commande.

En C / C ++, premier élément dans argv *

WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)


Oui, c'est la même chose dans .NET. Le premier argument est toujours le chemin complet de l'exécutable.
Adam Neal

1

Application.StartUpPath;


voulez-vous créer un lien vers une documentation?
John Sheehan

0

Disons que le nom de votre projet d'application de la console principale .Net est DataPrep.

Obtenir le répertoire de base du projet:

Console.WriteLine(Environment.CurrentDirectory);

Sortie: ~ DataPrep \ bin \ Debug \ netcoreapp2.2

Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);

Sortie: ~ DataPrep \


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.