执行二进制文件时出错

时间:2014-12-24 01:00:08

标签: c# process mono

好的,你好。我有一些代码应该执行我的二进制文件并打印所有输出:

Process Program = new Process();
Program.StartInfo.FileName = "file.bin";
Program.StartInfo.WorkingDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "/Build." + this.name;
Program.StartInfo.RedirectStandardOutput = true;
Program.StartInfo.UseShellExecute = false;
Program.Start();
string output = Program.StandardOutput.ReadToEnd();
Program.WaitForExit(1000);
Console.Out.WriteLine(output);

但是当我跑它时我得到了这个错误:

enter image description here

在屏幕截图中,您可以看到文件名和完整路径。好的,我们进入控制台:

enter image description here

喂!但那个文件存在!我已经尝试了相对路径。还是行不通。

P.S。 Mono,Ubuntu 14.04
P.P.S.当我删除UseShellExecute = false时,我的文件正在gedit中打开 P.P.P.S.文件是100%存在:

var fi = new FileInfo(Path.Combine("Build." + this.name, "file.bin"));
Console.Out.WriteLine(fi.Exists); //true

1 个答案:

答案 0 :(得分:4)

来自ProcessStartInfo.UseShellExecute

的文档

"当UseShellExecutefalse时,WorkingDirectory属性不用于查找可执行文件。相反,它仅由启动的进程使用,并且仅在新进程的上下文中具有意义。当UseShellExecutefalse时, FileName属性必须是可执行文件的完全限定路径。"