2010-11-22 73 views
2

有没有办法使用C#将标签应用于TFS 2008项目/目录? 我知道在命令行程序:TFS 2008应用C#标签#

tf label SampleLabel $/Project1/Source/* /recursive /server:TFS1 

但我想用C#代码要做到这一点,并且不希望运行从C#TF.exe命令行。

回答

3

下面的代码片段标记在一个特定的变更的所有更改。应该直接将其更改为标记特定路径中的所有文件。不要遍历变更集,只需执行vcServer.GetItems("$/Project1/path", RecursionType.Full)并遍历它们。

private void LabelChangeset(string fileLabel, Changeset changeset) 
    { 
     VersionControlLabel vcl = new VersionControlLabel(vcServer, fileLabel, null, cbProjects.SelectedItem.ToString(), "Autogen label."); 

     LabelItemSpec[] itemSpecs = new LabelItemSpec[changeset.Changes.Length]; 

     string ver = string.Format("C{0}", changeset.ChangesetId); 
     VersionSpec fileVersion = VersionSpec.ParseSingleSpec(ver, null); 

     int index = 0; 
     foreach (Change c in changeset.Changes) 
     { 
      itemSpecs[index++] = new LabelItemSpec(new ItemSpec(c.Item.ServerItem, RecursionType.None), fileVersion, false); 
     } 

     LabelResult[] results = vcServer.CreateLabel(vcl, itemSpecs, LabelChildOption.Replace); 
    }