次のスニペットは、コレクションのすべてのチーム プロジェクトのすべてのビルド定義をクロールし、すべてのビルドで入力変更セット番号への関連付けをチェックします。
using System;
using System.Linq;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
namespace FindChangesetInBuild
{
class Program
{
static void Main(string[] args)
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/collectionName"));
var versionControl = teamProjectCollection.GetService<VersionControlServer>();
var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));
var teamProjects = versionControl.GetAllTeamProjects(true);
foreach (var teamProject in teamProjects)
{
var buildDefinitions = buildService.QueryBuildDefinitions(teamProject.Name);
foreach (var buildDefinition in buildDefinitions)
{
var builds = buildService.QueryBuilds(buildDefinition);
foreach (var buildDetail in builds)
{
var changesets = InformationNodeConverters.GetAssociatedChangesets(buildDetail);
if (changesets.Any(changesetSummary => changesetSummary.ChangesetId == Convert.ToInt32(args[0])))
{
Console.WriteLine("Changeset was build in "+buildDetail.BuildNumber);
}
}
}
}
}
}
}
言うまでもなく、これは総当たり攻撃です。のリストを絞り込んだり、特定のものに焦点を当てたりする
と、コードをさらに絞り込むことができます。 いずれにせよ、上記がそのまま役立つとはほとんど想像できません。(明らかに) MSDNとは別に、TFS-SDK の優れたリソースは、Shai Raiten のブログです。Build-Specic の例については、おそらく興味深い SO 投稿について、こちらとこちらも確認してください。buildDefinition
teamProjects