从命令行查看变更集作为比较

时间:2016-03-10 10:46:28

标签: c# visual-studio tfs

我需要从命令行或反射加载Visual Studio,以便打开基于文件的变更集,作为更改文件和文件之间的比较,就像提交更改之前一样。

如果有人知道该怎么做,请告诉我它是如何完成的。

2 个答案:

答案 0 :(得分:0)

您可以使用tf.exe中的C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE实用程序来实现此目的。此命令将显示文件的两个版本之间的差异:

c:\projects>tf difference /version:C3~C8 1254.cs

更多选项和详细信息 - https://msdn.microsoft.com/en-us/library/6fd7dc73%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

答案 1 :(得分:0)

命令行

从命令行可以使用:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF" difference /version:XXXVERSIONFROMXXX~XXXVERSIONTOXXX XXXFILEPATHXXX

更换:

  • XXXVERSIONFROMXXX,左侧需要ChangesetId
  • XXXVERSIONTOXXX,右侧有你想要的ChangesetId
  • XXXFILEPATHXXX以及硬盘上文件的本地路径

注意:TF.exe可能与此处指定的文件夹位于不同的文件夹中。

C#中的反思

对于更改c和更改集cs,其中c是cs.Changes的成员,您可以像这样使用反射:

string ServerItem = c.Item.ServerItem.Substring(c.Item.ServerItem.IndexOf('/') + 1, c.Item.ServerItem.Length - c.Item.ServerItem.IndexOf('/') - 1);

string Filename = ServerItem.Substring(ServerItem.LastIndexOf('/') + 1, ServerItem.Length - ServerItem.LastIndexOf('/') - 1);

string Filepath = ServerItem.Substring(0, ServerItem.LastIndexOf('/'));


string TFPath = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\TF";

string TFParameters = "difference /version:" + (cs.ChangesetId - 1) + "~" + cs.ChangesetId + " " + TFSRootDirectory + (Filepath + "/" + Filename).Replace("/", "\\");


System.Diagnostics.Process.Start(TFPath, TFParameters);