首页 > 解决方案 > 从放置控制台应用程序快捷方式的位置读取文件

问题描述

我正在创建一个控制台应用程序,它从 exe 所在的文件夹中读取所有文件。我基本上想将 exe 放在一个包含文件的文件夹中,运行它,然后让它读取该文件夹中的所有文件。

不幸的是,我使用了一些 nuget 包,所以我有大约 10 多个其他 .dll 文件,以及 appsettings.json 文件等。我必须将所有这些 .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();
    }
}

标签: c#.net.net-coreasp.net-core-3.1

解决方案


使用 cmd 文件而不是快捷方式:

pushd %~dp0
Full-Path-to-exe\Program.exe

推荐阅读