web-dev-qa-db-fra.com

Comment obtenir le répertoire d'exécution de l'application console

J'ai essayé d'obtenir le répertoire de l'application console en utilisant le code ci-dessous,

Assembly.GetExecutingAssembly().Location

mais celui-ci me donne où réside l'assemblage. Cela peut être différent de l'endroit où j'ai exécuté l'application.

Mon application console analyse les journaux sans paramètres. Il faut aller au logs/ dossier à l'intérieur du dossier de l'exécutable ou si je lui donne un chemin d'accès à logs/ il l’analyse.

55
eugeneK

Utilisation Environment.CurrentDirectory.

Obtient ou définit le chemin complet du répertoire de travail en cours.
(MSDN Propriété Environment.CurrentDirectory )

string logsDirectory = Path.Combine(Environment.CurrentDirectory, "logs");

Si votre application est en cours d'exécution dans c:\Foo\Bar logsDirectory pointera vers c:\Foo\Bar\logs .

89
Stefan

Utilisez ceci :

System.Reflection.Assembly.GetExecutingAssembly().Location

Combinez cela avec

System.IO.Path.GetDirectoryName if all you want is the directory.
28
Sunny

Manière la plus sûre:

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
6
dtsg

Voici une méthode de journalisation simple

using System.IO;
private static void logWrite(string filename, string text)
{
    string filepath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\" + filename;

    using (StreamWriter sw = File.AppendText(filepath))
    {
        sw.WriteLine(text);
        Console.WriteLine(text);
    }
}

Usage:

logWrite("Log.txt", "Test");
2
Donovan Phoenix