2010-11-22 5 views
2

Gibt es eine Möglichkeit, ein Label auf ein TFS 2008-Projekt/Verzeichnis mit C# anzuwenden? Ich kenne das Kommandozeilenprogramm:TFS 2008 Label mit C# anwenden

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

Aber ich möchte dies mit C# -Code zu tun, und wollen nicht TF.exe Kommandozeile von C# laufen.

Antwort

3

Der folgende Codeausschnitt kennzeichnet alle Änderungen in einem bestimmten Änderungsset. Es sollte einfach sein, es zu ändern, um alle Dateien in einem bestimmten Pfad zu kennzeichnen. Anstatt das Changeset zu durchlaufen, tun Sie einfach eine vcServer.GetItems("$/Project1/path", RecursionType.Full) und durchlaufen Sie sie.

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