Подтвердить что ты не робот

Как получить каталог выполнения консольного приложения

Я попытался получить каталог консольного приложения, используя приведенный ниже код,

Assembly.GetExecutingAssembly().Location

но это дает мне, где собирается сборка. Это может отличаться от того, где я выполнил приложение.

Мое консольное приложение анализирует журналы без параметров. Он должен перейти в папку logs/ внутри исполняемой папки или если я даю ей путь к logs/, он анализирует ее.

4b9b3361

Ответ 1

Используйте Environment.CurrentDirectory.

Получает или задает полный путь к текущему рабочему каталогу.
(MSDN Свойство Environment.CurrentDirectory)

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

Если ваше приложение запущено в c:\Foo\Bar logsDirectory, он укажет на c:\Foo\Bar\logs.

Ответ 2

Используйте это:

System.Reflection.Assembly.GetExecutingAssembly().Location

Объедините это с

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

Ответ 3

Самый безопасный способ:

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

Ответ 4

Вот простой метод регистрации

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);
    }
}

Использование:

logWrite("Log.txt", "Test");