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#
?
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.
AppDomain.CurrentDomain.BaseDirectory
using System.Reflection;
string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
"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
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.
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.
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";