Comment savoir dans quel répertoire mon application console s'exécute avec C #?
c#
.net
console-application
John Sheehan
la source
la source
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.
la source
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Location)
la source
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é).la source
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)
la source
Application.StartUpPath;
la source
Disons que le nom de votre projet d'application de la console principale .Net est DataPrep.
Obtenir le répertoire de base du projet:
Sortie: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory: string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\")); Console.WriteLine(ProjectDirPath);
Sortie: ~ DataPrep \
la source
Utiliser
AppContext.BaseDirectory
pour .net5.la source