我正在尝试通过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();
}
这导致一组参数如此(我刚刚删除了完整的项目名称):
然后我收到以下错误:
历史命令只需要一个项目。
如果我将字符串拼凑在一起并在正常的命令行中执行,那么它可以工作:
谁能告诉我我错过了什么?
答案 0 :(得分:1)
您无法将输出重定向到Process.Start
参数中的文件。文件重定向是shell的一个功能。
如果要将历史记录放入文件中,则需要自己File.Open
该文件,读取tf history
命令的输出并将其写入文件。
或者您可以使用命令脚本或PowerShell脚本。