Чтение файлов с места расположения ярлыка консольного приложения - PullRequest
0 голосов
/ 03 апреля 2020

Я создаю консольное приложение, которое читает все файлы из папки, в которой находится exe-файл. Я в основном хочу поместить exe-файл в папку, в которой есть файлы, запустить его, и он должен прочитать все файлы в этой папке ,

К сожалению, я использую несколько пакетов nuget, поэтому у меня есть около 10+ других DLL-файлов вместе с настройками приложения. json file et c. Мне нужно скопировать все эти .dll вместе с моим .exe файлом в папку, содержащую файлы, которые я хочу прочитать, чтобы запустить его.

  1. Есть ли способ скопировать только exe-файл в папку, содержащую файлы, и запустить его? (Я попробовал это, но моя консоль сразу закрывалась)
  2. Так как описанное выше не сработало, я подумал, что могу создать ярлык .exe и просто поместить его в папку, содержащую файлы. Но похоже, что он ищет файлы в папке, в которой содержится исходный файл .exe

Ниже приведен мой код

var folderPath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
var filePath = Directory.GetFiles(folderPath, "*.csv", SearchOption.AllDirectories);
foreach (var filePath in filePaths)
{
    Console.WriteLine($"Reading file {filePath}");
    using (var reader = new StreamReader(filePath))
    using (var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
      records = csvReader.GetRecords<Player>().ToList();
    }
}

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Использовать файл cmd вместо ярлыка:

pushd %~dp0
Full-Path-to-exe\Program.exe
1 голос
/ 03 апреля 2020
  1. Исполняемый файл должен быть размещен там, где находятся его зависимости.
  2. Выполнение исполняемого файла с помощью ярлыка не «меняет» путь, в котором выполняется процесс. Процесс все еще живет там, где был запущен исходный исполняемый файл.

Для решения этой проблемы можно рассмотреть два обходных пути:

  • Скопируйте или переместите эти файлы в исполняемую рабочую область.
  • Использовать абсолютные пути вместо относительных путей в зависимости от исполняемого местоположения.
...