将命令行参数从C#传递到外部exe

我有类似的问题已在这里解决了 。 但我无法弄清楚,问题是如何解决的。 我有一个程序,可以定义一个输入和输出文件。 从Commend行运行,一切正常:

D:\Tools\siftDemoV4>siftWin32.exe -display  result.pbm 

但是通过System.Diagnostics.Process运行不起作用。 我收到错误“无效的命令行参数:<”,然后发生System.InvalidOperationException。

 var process = new Process() { StartInfo = { Arguments = string.Format(@"-display  {1}", configuration.Source, configuration.Destination), FileName = configuration.PathToExternalSift, RedirectStandardError = true, RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, ErrorDialog = false, } }; process.EnableRaisingEvents = true; process.Exited += OnProcessExited; process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); 

在调用process.Start()之后,我已经尝试写入process.StandardInput,但是在使用调试器时,外部程序有时已经完成(HasExited == true)。

任何人都可以解释我如何将这个特殊的“”参数传递给程序吗?

最好的问候!

顺便说一句,我多次检查路径,它们是正确的。

您需要的唯一参数是-display其他不是程序的参数,应该由您使用RedirectStandardInputRedirectStandardOutput来处理

例如

  • 读取文件D:\tmp\SrcPgm\image000.pbm
  • 写入您的流程的StandardInput
  • 从您的流程的StandardOutput中读取
  • 写入result.pbm

使用命令重定向运算符