Comment savoir dans quel répertoire mon application console s'exécute avec C #?
Comment savoir dans quel répertoire mon application console s'exécute avec C #?
Réponses:
Pour obtenir le répertoire où se trouve le fichier .exe:
AppDomain.CurrentDomain.BaseDirectory
Pour obtenir le répertoire courant:
Environment.CurrentDirectory
System.AppContext.BaseDirectory
.
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.
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Location)
Dans .NET, vous pouvez utiliser System.Environment.CurrentDirectory
pour obtenir le répertoire à partir duquel le processus a été lancé.
System.Reflection.Assembly.GetExecutingAssembly().Location
vous 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é).
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)
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 \
Utiliser AppContext.BaseDirectory
pour .net5.