Process.Start - 与TFS命令行的参数斗争

时间:2014-01-23 16:01:00

标签: c# tfs

我正在尝试通过Process.Start执行TFS但是遇到了一些困难,我无法理解为什么。这是我的代码片段:

        /// <summary>
        /// Get the entire history for a project
        /// </summary>
        public void GetHistory(String project)
        {
            ProcessStartInfo info = new ProcessStartInfo();
            String fileName = Path.GetTempFileName();
            info.Arguments = String.Format("history \"{0}\" /recursive /format:Detailed /noprompt > {1}", "c:\\source\\ " + project, fileName);
            info.FileName = "\"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\tf.exe\"";
            info.RedirectStandardError = true;
            info.UseShellExecute = false;

            Process process = new Process();
            process.StartInfo = info;
            process.Start();

            process.WaitForExit();

            Console.WriteLine(process.StandardError.ReadToEnd());

            Console.WriteLine("History written to " + fileName);
            Console.ReadKey();
        }

这导致一组参数如此(我刚刚删除了完整的项目名称):

enter image description here

然后我收到以下错误:

  

历史命令只需要一个项目。

如果我将字符串拼凑在一起并在正常的命令行中执行,那么它可以工作:

enter image description here

谁能告诉我我错过了什么?

1 个答案:

答案 0 :(得分:1)

您无法将输出重定向到Process.Start参数中的文件。文件重定向是shell的一个功能。

如果要将历史记录放入文件中,则需要自己File.Open该文件,读取tf history命令的输出并将其写入文件。

或者您可以使用命令脚本或PowerShell脚本。