2010-11-22 33 views
2

C# ile TFS 2008 proje/dizinine etiket uygulamak için bir yol var mı? Ben komut satırı programın biliyorum:TFS 2008 C# ile etiketleme uygulanıyor

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

Ama C# kodu ile bunu yapmak istiyor ve C# dan TF.exe CommandLine çalıştırmak istediğiniz değil.

cevap

3

Aşağıdaki kod parçacığı, belirli bir değişiklik kümesindeki tüm değişiklikleri etiketler. Belirli bir yoldaki tüm dosyaları etiketlemek için bunu değiştirmek kolay olmalıdır. Değişikler kümesinde yineleme yapmak yerine, sadece bir vcServer.GetItems("$/Project1/path", RecursionType.Full) yapın ve bunların üzerinden yineleyin.

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); 
    }