So che questo è un vecchio post, ma ho cercato di capire come ottenerlo per molte ore e ho pensato che qualcun altro potesse beneficiare di ciò che ho messo insieme. Sto lavorando con TFS 2013 e questo è stato compilato insieme da diverse fonti. So che non tutti mi ricordo a questo punto, ma i principali dove:
Get Associated Changesets from Build
Queue a Team Build from another and pass parameters
quello che mi mancava da maggior parte degli articoli che ho trovato su questo argomento è stato come prendere la build dettagli e carica i changeset o gli elementi di lavoro associati. La classe InformationNodeConverters era la chiave mancante per questo e ti permette di ottenere anche altri elementi.Una volta ottenuto ciò, sono riuscito a trovare il seguente codice che è piuttosto semplice.
Si noti che se si esegue questo da uno script PowerShell di generazione post è possibile utilizzare la variabile TF_BUILD_BUILDURI. Ho anche incluso il codice che ho trovato per prendere i dati di riepilogo recuperati e caricare l'articolo effettivo.
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
namespace Sample
{
class BuildSample
{
public void LoadBuildAssociatedDetails(Uri tpcUri, Uri buildUri)
{
TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tpcUri);
IBuildServer buildServer = collection.GetService<IBuildServer>();
IBuildDetail buildDetail = buildServer.GetAllBuildDetails(buildUri);
List<IChangesetSummary> changeSets = InformationNodeConverters.GetAssociatedChangesets(buildDetail);
VersionControlServer vcs = collection.GetService<VersionControlServer>();
IEnumerable<Changeset> actualChangeSets = changeSets.Select(x => vcs.GetChangeset(x.ChangesetId));
List<IWorkItemSummary> workItems = InformationNodeConverters.GetAssociatedWorkItems(buildDetail);
WorkItemStore wis = collection.GetService<WorkItemStore>();
IEnumerable<WorkItem> actualWorkItems = workItems.Select(x => wis.GetWorkItem(x.WorkItemId));
}
}
}
qualsiasi soluzione finale con il campione completo di codice sorgente a lavorare su di esso? – Kiquenet