2014-01-23 2 views
0

Я пытаюсь выполнить TFS через Process.Start, но у меня есть некоторые трудности, и я не могу понять, почему. Вот мой фрагмент кода: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

Затем я получаю следующее сообщение об ошибке:

The history command takes exactly one item.

Если я кусочки строки вместе и выполнить в обычной командной строке, однако затем он работает:

enter image description here

Может ли кто-нибудь сказать мне, что мне не хватает?

ответ

1

Вы не можете перенаправить вывод в файл в аргументы Process.Start. Перенаправление файлов - это функция оболочки.

Если вы хотите поместить историю в файл, вам понадобится файл File.Open, прочитайте вывод команды tf history и напишите его в файл.

Или вы можете использовать скрипт командной строки или скрипт PowerShell.

Смежные вопросы