Ci sono vari modi per scaricare del codice a partire da una label, il più corretto é indubbiamente costruire una GetRequest che prenda gli Item di un certo Path a partire dalla versione della Label:
private
static
void GetFromLabelVersion(VersionControlServer vcs, VersionControlLabel label, string folder, string workSpaceName, string workSpaceOwner)
{
//Ottengo il WorkSpace da Nome e Owner
Workspace workspace = vcs.GetWorkspace(workSpaceName, workSpaceOwner);
//Riferimento alla versione "della label"
VersionSpec version = new
LabelVersionSpec(label.Name, label.Scope);
//Costruisco la richiesta
GetRequest request = new
GetRequest(folder, RecursionType.Full, version);
//Scarico dal WorkSpace
workspace.Get(request, GetOptions.None);
}
Quello che invece sembra il più intuitivo é in realtà il più sbagliato: costruire delle richieste usando gli item caricati nella Label stessa uno per uno e specificandone il ChangeSetId:
List<GetRequest> requestsList = new
List<GetRequest>();
foreach (Item item in label.Items)
requestsList.Add(new
GetRequest(new
ItemSpec(item.ServerItem, RecursionType.None), item.ChangesetId));
GetRequest[] requests = requestsList.ToArray();
Questa é un'ottima idea se volete che il SQL Server del vostro TFS si metta a piangere e i colleghi vi coprano di insulti perché avete incrocchiato il server per mezz'ora...