TFS:查询包含特定变更集的构建

J. *_*fer 6 build tfs-sdk tfs2010

我有许多基于TFS中的单个分支(例如Main)执行的构建定义.

我想(以某种方式)查询TFS以查找包含我提供的特定变更集编号的所有构建,并返回TFS包含的构建名称的字符串列表.任何类型的应用程序(VS扩展,CLI应用程序,winforms,等等)都可以.

注意:这不是'请给我代码'请求; 我愿意嘲笑它并在此做认真的工作.有关如何查询数据库或SDK的文档的任何指针,或者如何查询构建的示例; 只是一些开始寻找的地方会非常有帮助.谢谢.

pan*_*lif 9

以下代码段将抓取Collection的所有Team Project的所有Build Definitions,并将检查关联到输入变更集编号的每个构建:

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);
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不用说,这是一场蛮力攻击.
如果缩小列表范围buildDefinition,可以进一步优化代码,重点关注特定的teamProjects等等.无论如何,我很难想象上面的内容是否有用!

除了(显然)MSDN之外,TFS-SDK的一个很好的资源是Shai Raiten的博客.
对于Build-Speficic示例,请在此处此处查看一些可能有趣的SO帖子.