Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从控制台应用程序快捷方式所在的位置读取文件_C#_.net_.net Core_Asp.net Core 3.1 - Fatal编程技术网

C# 从控制台应用程序快捷方式所在的位置读取文件

C# 从控制台应用程序快捷方式所在的位置读取文件,c#,.net,.net-core,asp.net-core-3.1,C#,.net,.net Core,Asp.net Core 3.1,我正在创建一个控制台应用程序,它读取exe所在文件夹中的所有文件。我基本上想把exe放在一个有文件的文件夹中,运行它,让它读取该文件夹中的所有文件 不幸的是,我使用的是一些nuget软件包,所以我有大约10多个其他.dll文件,以及appsettings.json文件等。 我必须将所有这些.dll以及.exe文件复制到包含要读取的文件的文件夹中才能运行它 有没有办法将exe文件复制到包含这些文件的文件夹并运行它?(我试过了,但我的控制台马上就关上了) 由于上面的操作不起作用,我想我可以创建一个.

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

不幸的是,我使用的是一些nuget软件包,所以我有大约10多个其他.dll文件,以及appsettings.json文件等。 我必须将所有这些.dll以及.exe文件复制到包含要读取的文件的文件夹中才能运行它

  • 有没有办法将exe文件复制到包含这些文件的文件夹并运行它?(我试过了,但我的控制台马上就关上了)
  • 由于上面的操作不起作用,我想我可以创建一个.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();
        }
    }
    
    
    var folderPath=Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
    var filePath=Directory.GetFiles(folderPath,“*.csv”,SearchOption.AllDirectories);
    foreach(filePath中的var filePath)
    {
    WriteLine($“正在读取文件{filePath}”);
    使用(var reader=newstreamreader(filePath))
    使用(var csvReader=new csvReader(reader,CultureInfo.InvariantCulture))
    {
    records=csvReader.GetRecords().ToList();
    }
    }
    
  • 可执行文件必须放在其依赖项所在的位置
  • 通过快捷方式执行可执行文件不会“更改”进程运行的路径。该进程仍然存在于原始可执行文件已启动的位置
  • 你可以考虑两个解决办法:< /P>

    • 在可执行工作区中复制或移动这些文件
    • 使用绝对路径,而不是基于可执行文件位置的相对路径
  • 可执行文件必须放在其依赖项所在的位置
  • 通过快捷方式执行可执行文件不会“更改”进程运行的路径。该进程仍然存在于原始可执行文件已启动的位置
  • 你可以考虑两个解决办法:< /P>

    • 在可执行工作区中复制或移动这些文件
    • 使用绝对路径,而不是基于可执行文件位置的相对路径

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

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

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

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

    好的,谢谢。我想这可能不可能,但我只是想检查一下。我要绝对的path@VRoxa可执行文件可以将其依赖项嵌入为资源;这将解决OPOk的问题,谢谢。我想这可能不可能,但我只是想检查一下。我要绝对的path@VRoxa可执行文件可以将其依赖项嵌入为资源;这将解决OP的问题