web-dev-qa-db-fra.com

Obtenir le répertoire de l'application à partir d'une application WPF

J'ai trouvé des solutions pour Windows Forms avec AppDomain, mais quel serait l'équivalent pour un objet WPF Application?

160
Joey

Une méthode:

System.AppDomain.CurrentDomain.BaseDirectory

Une autre façon de le faire serait:

System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
315
Helen

Voici un autre:

System.Reflection.Assembly.GetExecutingAssembly().Location
27
Eddie Butt

Vous pouvez également utiliser le premier argument des arguments de la ligne de commande:

String exePath = System.Environment.GetCommandLineArgs()[0]

7
Flip

J'ai utilisé simplement string baseDir = Environment.CurrentDirectory; et son travail pour moi.

Bonne chance

Modifier:

J'avais l'habitude de supprimer ce type d'erreur mais je préfère l'éditer parce que je pense que le point négatif de cette réponse aide les gens à connaître le mauvais chemin. :) J'ai compris que la solution ci-dessus n'était pas utile et je l'ai changée en string appBaseDir = System.AppDomain.CurrentDomain.BaseDirectory; D'autres moyens de l'obtenir sont les suivants:

1. string baseDir =   
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
 2. String exePath = System.Environment.GetCommandLineArgs()[0];
 3. string appBaseDir =    System.IO.Path.GetDirectoryName
    (System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);

Bonne chance

4
QMaster

Essaye ça. N'oubliez pas using System.Reflection.

string baseDir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
3
Roshan J
String exePath = System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName;
 string dir = Path.GetDirectoryName(exePath);

Essaye ça!

3
Arsen Mkrtchyan

J'ai essayé ceci:

    label1.Content = Directory.GetCurrentDirectory();

et obtenez aussi le répertoire.

0
paul

Vous pouvez également utiliser librement Application.StartupPath à partir de System.Windows.Forms, mais vous devez ajouter une référence à System.Windows.Forms Assembly!

0
crash