Process.StandardOutput.ReadToEnd() - 输出为空。从cmd运行相同的应用程序 - 输出就可以了

时间:2015-10-27 12:49:47

标签: c# ironpython iar

我在使用using (var uow = new UnitOfWork()) { using (var repo = new Repository(uow)) { if (repo.UpdateStuff()) { uow.Save(); } } } 实用程序(IarBuild.exe cmd实用程序构建项目时构建项目时尝试获取输出) 我使用简单的IAR脚本:

IronPython

在我的情况下"输出"总是空的(" StandardError"也是空的)。 如果我尝试在命令行中执行相同的应用程序(" cmd.exe"),则会成功显示输出。

可能问题与某些操作系统设置(或其他安装的应用程序所做的更改)有关,因为当我尝试在其他虚拟机(同一操作系统)上执行相同的脚本时, process = System.Diagnostics.Process() process.StartInfo.FileName = path_process process.StartInfo.Arguments = command_line_arguments process.StartInfo.RedirectStandardError = True process.StartInfo.RedirectStandardOutput = True process.StartInfo.RedirectStandardInput = True process.StartInfo.UseShellExecute = False process.StartInfo.CreateNoWindow = True process.Start() output = process.StandardOutput.ReadToEnd() process.WaitForExit() return {"Exit code": process.ExitCode, "Output": output} 就可以了。< / p>

当我使用&#34; subprocess.call()&#34;时,我得到了相同的结果。方法而不是&#34; System.Diagnostics.Process()&#34;

1 个答案:

答案 0 :(得分:0)

当你传递参数时。看来你传递了三个参数:

1)C:\ test \ test.ewp 2) - 构建调试 3) - 日志信息 但是它们被认为是6个参数,因为它们包含空格。

使用

command_line_arguments = "\"C:\\test\\test.ewp\" \"-build Debug\" \"-log info\""

我可能错了。如需进一步参考,请查看https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.arguments(v=vs.110).aspx