我需要從TFS獲取修訂版本號,如果我從進程暫停的進程運行tf.exe。如果我從命令運行相同的命令promts它的作品?從C#暫停執行tf.exe(TFS)
int revision;
var repo = "path to repo"
var psi = new ProcessStartInfo("cmd", @"/c ""C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\tf.exe"" properties $/MYProject -recursive /version:W")
{
UseShellExecute = false,
ErrorDialog = false,
CreateNoWindow = false,
WorkingDirectory = repo,
RedirectStandardOutput = true,
RedirectStandardError = true
};
using (var p = Process.Start(psi))
{
p.WaitForExit();
if (p.ExitCode != 0)
{
using (var standardError = p.StandardError)
{
Console.WriteLine(standardError.ReadToEnd());
}
}
else
{
using (var standardOutput = p.StandardOutput)
{
revision = int.Parse(standardOutput.ReadToEnd());
}
}
}
編輯:
我這樣做,工作,我應該去用它?
public int GetLatestChangeSet(string url, string project)
{
var server = new TeamFoundationServer(new Uri(url));
var version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;
var items = version.GetItems(string.Format(@"$\{0}", project), RecursionType.Full);
return items.Items.Max(i => i.ChangesetId);
}
你爲什麼不使用SDK? http://msdn.microsoft.com/en-us/library/bb130146(v=vs.100).aspx –
同意@MikeMiller,如果你想在TF工具上使用Reflector,它在內部使用TFS SDK。 –
在您的ProcessStartInfo中,您正在使用錯誤的語法來啓動.exe文件。 (通過「cmd」啓動一個.exe)這裏是[ProcessStartInfo]的正確語法(http://stackoverflow.com/questions/1538711/passing-paths-to-cmd-using-processstartinfo-not-working-as-意)。 –