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

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

Assembly.GetExecutingAssembly().Location

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

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

 Karsten03 окт. 2014 г., 08:40
Посмотрите на этот вопрос:stackoverflow.com/questions/674857/…

Ответы на вопрос(3)

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

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
 15 янв. 2018 г., 16:37
Будучи уверен, что файл находится на диске, я использую эту версию, чтобы получить & quot; обычный & quot; путь вместоfile:// дорожка:Path.GetDirectoryName(new Uri(this.GetType().Assembly.GetName().CodeBase).LocalPath)
 21 апр. 2014 г., 20:19
CodeBase - это URL-адрес места, где был найден файл, а Location - это путь, с которого он был фактически загружен. Например, если сборка была загружена из Интернета, ее CodeBase может начинаться с «http: //», но ее расположение может начинаться с «C: \». Если файл был теневым копированием, в качестве местоположения будет указан путь к копии файла в каталоге теневого копирования. Также полезно знать, что CodeBase не гарантированно будет установлен для сборок в GAC. Однако для всегда загружаемых с диска сборок всегда будет указано местоположение.
Решение Вопроса

использованиеEnvironment.CurrentDirectory.

Gets or sets the fully qualified path of the current working directory.
(MSDN Environment.CurrentDirectory Property)

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

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

 23 янв. 2018 г., 17:45
Environment.CurrentDirectory - это значение, которое может и будет меняться в ходе работы вашего приложения. Например, используя параметры по умолчанию, OpenFileDialog в WinForms изменит это значение на каталог, из которого был выбран файл
 20 мая 2016 г., 02:02
Текущий каталог отличается от каталога, содержащего текущий исполняемый файл.

Использовать этот :

System.Reflection.Assembly.GetExecutingAssembly().Location

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

System.IO.Path.GetDirectoryName if all you want is the directory.
 29 июл. 2013 г., 14:57
 30 нояб. 2017 г., 10:11
Если я использую Environment.CurrentDirectory, который запускается по расписанию, он будет идти в C: \ Windows \ system32 \ log, который не является путем выполнения. Затем я использую этот System.Reflection.Assembly.GetExecutingAssembly (). Расположение, оно указывает на мой правильный путь выполнения exe. Спасибо!
 15 янв. 2018 г., 16:38
Это может не сработать, как вы надеетесь, в модульных тестах или в веб-проектах, использующих локальный IIS.CodeBase ответ делает.

Ваш ответ на вопрос