build - TFS : Query for builds containing a specific changeset

标签 build tfs-sdk

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

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

注意:这不是“请给我代码”的请求;我愿意为此做准备并认真工作。有关如何查询数据库或SDK的文档的任何指针,或有关如何查询内部版本的示例的任何指针;只是一个开始寻找的地方会非常有帮助。谢谢。

最佳答案

以下代码段将抓取集合的所有团队项目的所有构建定义,并将检查每个构建中是否存在与输入变更集编号的关联:

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

不用说,这是蛮力攻击。如果您缩小buildDefinition的范围,专注于特定的teamProjects等,则可以进一步优化代码。无论如何,我几乎无法想象上面的代码是有用的! Soji Raiten的MSDN是(显然)blog的TFS-SDK的一个很好的资源。

关于build - TFS : Query for builds containing a specific changeset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10019522/

相关文章:

c# - 如何添加自定义 TFS CheckinNoteDefinitions?

.net-4.0 - Workspace.PendEdit 未 checkout 文件

c# - 如何使工作 'do not copy' app.config到输出目录?

ios - 从新项目更新 iOS 应用程序

c# - WorkItem.Links.Contains() 它有什么作用?

c# - 如何从源代码管理中删除团队项目文件夹?

c# - Azure Devops - 通过代理池 ID 获取发布定义

json - 使用gradle任务更新json文件中的 token

c++ - CMake : External project remote URL not working

c++ - 设置 C/C++ 构建配置在点击确定后恢复为默认值