好的,你好。我有一些代码应该执行我的二进制文件并打印所有输出:
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);
但是当我跑它时我得到了这个错误:
在屏幕截图中,您可以看到文件名和完整路径。好的,我们进入控制台:
喂!但那个文件存在!我已经尝试了相对路径。还是行不通。
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
答案 0 :(得分:4)
来自ProcessStartInfo.UseShellExecute
"当UseShellExecute
为false
时,WorkingDirectory
属性不用于查找可执行文件。相反,它仅由启动的进程使用,并且仅在新进程的上下文中具有意义。当UseShellExecute
为false
时, FileName
属性必须是可执行文件的完全限定路径。"