Как получить каталог выполнения консольного приложения
Я попытался получить каталог консольного приложения, используя приведенный ниже код,
Assembly.GetExecutingAssembly().Location
но это дает мне, где собирается сборка. Это может отличаться от того, где я выполнил приложение.
Мое консольное приложение анализирует журналы без параметров. Он должен перейти в папку logs/
внутри исполняемой папки или если я даю ей путь к logs/
, он анализирует ее.
Ответы
Ответ 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");