2010-11-22 18 views
2

Existe-t-il un moyen d'appliquer une étiquette à un projet/répertoire TFS 2008 avec C#? Je sais du programme de ligne de commande:TFS 2008 appliquer l'étiquette avec C#

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

Mais je veux le faire avec le code C#, et ne veulent pas courir TF.exe de C# commandline.

Répondre

3

L'extrait de code suivant marque toutes les modifications d'un ensemble de modifications particulier. Il devrait être facile de le changer pour étiqueter tous les fichiers dans un chemin particulier. Au lieu d'itérer à travers le changeset, faites simplement un vcServer.GetItems("$/Project1/path", RecursionType.Full) et parcourez-les.

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