web-dev-qa-db-fra.com

Obtenir le chemin absolu de l'exécutable, en utilisant C #?

Regardez ce pseudocode:

string exe_path = system.get_exe_path()
print "This executable is located in " + exe_path

Si je construis le programme ci-dessus et place l'exécutable dans C:/meow/, Il imprimerait This executable is located in C:/meow/ à chaque exécution, quel que soit le répertoire de travail en cours.

Comment pourrais-je facilement accomplir cela en utilisant C#?

66
user12163

MSDN a un article qui dit d'utiliser System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase; si vous avez besoin du répertoire, utilisez System.IO.Path.GetDirectoryName sur ce résultat.

Ou, il y a le plus court Application.ExecutablePath qui "Obtient le chemin du fichier exécutable qui a démarré l’application, y compris le nom de l’exécutable", ce qui pourrait signifier qu’il est légèrement moins fiable en fonction du mode de lancement de l’application.

97
Mark Rushakoff
AppDomain.CurrentDomain.BaseDirectory
43
Liquid Core
using System.Reflection;

string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
12
newb

"Obtient le chemin ou l’emplacement UNC du fichier chargé contenant le manifeste."

Voir: http://msdn.Microsoft.com/en-us/library/system.reflection.Assembly.location.aspx

Application.ResourceAssembly.Location
4
Mike de Klerk
var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

J'ai sauté dans la réponse la mieux notée et je me suis retrouvé à ne pas obtenir ce que je pensais. Je devais lire les commentaires pour trouver ce que je cherchais.

Pour cette raison, je poste la réponse indiquée dans les commentaires pour lui donner la visibilité qu’elle mérite.

3
user1

De mon côté, j'ai utilisé, avec une application de formulaire:

String Directory = System.Windows.Forms.Application.StartupPath;

il faut le chemin de démarrage de l'application.

1
Sébastien

Supposons que j'ai un fichier .config dans l'application de la console et que je reçois maintenant comme ci-dessous.

Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config";
1
Muhammad Mubashir