运行" tf.exe状态"在C#中保存结果

时间:2014-04-25 09:11:45

标签: c# tfs

我正在尝试在c#中创建一个小型控制台应用。我想运行该程序并将TFS中的所有挂起更改保存到.txt文件中。但我不能让这些论据奏效。有人能帮助我吗?

这是我到目前为止所做的代码:

string argument = "@tf.exe status /collection:http://tiffany:8080/tfs/ /user:* /format:detailed >c:\\Status\\Detailed.txt";

try
{
    Process process = new Process();
    process.StartInfo.Arguments = "@call" + " " + "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\VsDevCmd.bat";
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.Verb = "runas";
    process.StartInfo.Arguments = argument;
    process.StartInfo.CreateNoWindow = false;
    process.Start();
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
    Console.ReadKey();
}

4 个答案:

答案 0 :(得分:1)

我并不确定我完全理解你要打电话的内容。 假设您要从C#应用程序运行以下命令行,就像从命令行调用它一样:

tf.exe status /collection:http://tiffany:8080/tfs/ /user:* /format:detailed >c:\\Status\\Detailed.txt"

我会使用这段代码:

string arguments = @"/C tf.exe status /collection:http://tiffany:8080/tfs/ /user:* /format:detailed >c:\\Status\\Detailed.txt";
this.process = new Process();
this.process.StartInfo.FileName = @"cmd.exe";
this.process.StartInfo.Arguments = arguments;

this.process.Start();

编辑: 如果那是您的所有控制台应用程序,为什么不考虑创建批处理(.BAT / .CMD)文件而不是C#应用程序?

答案 1 :(得分:1)

您可以利用TFS API而不是运行命令行工具。

那里有很多文章,例如Code project article on topic

Sample code directly from the MSDN

答案 2 :(得分:0)

我想你必须阅读标准错误并从进程开始输出:

Process process = new Process();
process.StartInfo.Arguments = @"status PATH /recursive";
process.StartInfo.FileName = "tf.exe";
process.StartInfo.CreateNoWindow = false;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();

var st = process.StandardOutput.ReadToEnd();
var err = process.StandardError.ReadToEnd();

但解析输出输出并不容易,我建议使用TFS API,因为@Mare说

答案 3 :(得分:0)

您无需在C#中创建应用程序即可保存在文本文件中。只需在命令末尾使用参数(...) > [file name].txt

“>” symbol将任何命令的结果发送到文件。