【问题标题】:Run exe file in c# within the program folder在程序文件夹中的c#中运行exe文件
【发布时间】:2016-05-25 12:59:03
【问题描述】:

我需要从我的程序目录启动一个 EXE 文件,但不提供完整路径。

private void programul1ToolStripMenuItem_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start(@"C:\Users\radum\Desktop\mapa 3 prog\Prog3\Program 1.exe");
}

我能做些什么来只从 ...\Prog3\Program 1.exe 给出路径?

【问题讨论】:

  • Program 1.exe 放在项目的已编译二进制文件旁边,而不是解决方案文件旁边。
  • 我把 Program 1.exe 移到 bin 文件夹旁边,还是什么都没有

标签: c# .net exe process.start


【解决方案1】:

只需使用relative path

System.Diagnostics.Process.Start(@"Program 1.exe");

如果Program 1.exe 与运行该代码的程序位于同一目录中,并且current working directory 未使用例如快捷方式进行修改,则上述代码将起作用。

如果没有,那么您必须找出程序的相对路径(应该在bin/debug/ 中的路径)

【讨论】:

  • 不能,它说“System.dll 中发生'System.ComponentModel.Win32Exception' 类型的未处理异常附加信息:系统找不到指定的文件”
  • 正如这个答案所说,确保文件实际上在同一个目录中。 cmets也是这么说的。从您的屏幕截图中,您的父程序似乎与Program 1.exe 位于同一文件夹中
  • 您是否碰巧从 Visual Studio 运行您的程序? VS 将在您的调试/发布文件夹中执行已编译的 exe,因此您的工作目录将类似于“C:\Users\radum\Desktop\mapa 3 prog\Prog3\Topai Catalin 11.6\Bin\Debug\”。 (这就是 Program 1.exe 需要的地方)
  • 他确实说 IF.. 如果没有,您可以执行“..\someotherdir\Program 1.exe”或“somefolder\Program 1.exe”……这很简单……但是如果您的程序 1 的 exe 可以移动,那么完整路径并存储其位置是个好主意
  • Program 1.exe 放在 `Topai Catalin 11.6\Bin\Debug` 目录中。
【解决方案2】:

通常解决方案目录比默认输出目录高 3 级,因此您应该使用

System.Diagnostics.Process.Start(@"..\..\..\Program 1.exe");

但你不应该这样做。您必须将Program 1.exe 复制到您的输出目录并使用

System.Diagnostics.Process.Start(@"Program 1.exe");

相反。您可以使用post build commands 来执行此操作。 将此用作构建后命令

copy "$(SolutionDir)Program 1.exe" "$(OutDir)Program 1.exe"

【讨论】:

    【解决方案3】:

    Common.AssemblyDirectory 返回包含正在运行的程序集的文件夹。

    所以使用: Path.Combine(Common.AssemblyDirectory, @"Prog3\Program 1.exe");

    编辑:您在我回答后编辑了问题。正如 poke 所说,您将文件放在错误的文件夹中。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多