TFS 2010问题跟踪由于门控签名导致的构建中的变更集

时间:2011-06-08 14:50:16

标签: tfs tfs2010 tfsbuild gated-checkin

为了检索Changeset包含在哪个Build中的信息,我们使用Team Foundation Sidekicks的“Label Sidekick”,我们在其中放置Build& amp;的标签。期待找到新建的Changeset。

我们在TFS 2010中的开发过程正在使用'Gated'签到,所以我们面临的情况是Sidekicks中没有提供最新的签到(我们实际收到之前的变更集建立)。这是可以解释的,因为在标签发生时,尚未提交最新的更改。

BuildLog会正确报告关联的变更集。

我在构建过程模板中做了几个实验,但似乎无法得到我们需要的东西。 例如,将“标记”活动放置在“运行代理”范围之外,将我引导到一个构建,该构建在一开始就失败,并且“对象引用未设置为对象的实例”。 (我想这与事实有关,我必须扩大'标签'和'工作区'变量的范围以使第二部分运行。)
此尝试的构建过程模板的“之前”状态为here(这可行),“之后”状态(“对象引用未设置...”)为here

总而言之,两种不同类型的输入可以帮助我:

  

我应该如何更改构建流程模板,以便在提交门控签名后标签发生? ( - 这会使Sidekicks中的显示合理化)

  

如何以编程方式检索每个Build的关联Changeset? ( - 这将使我能够编写一个可以淘汰Sidekicks角度的小应用程序)

1 个答案:

答案 0 :(得分:3)

您可以使用TFS API完成此操作。

        public static void GetBuild()
    {
        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsdevlonuk:8080/tfs/gazprom.mt"), new UICredentialsProvider());
        tfs.EnsureAuthenticated();
        var buildServer = tfs.GetService<IBuildServer>();

        // Get Project Name
        var versionControl = tfs.GetService<VersionControlServer>();
        var teamProjects = versionControl.GetAllTeamProjects(true);

        // Get Builds for a team project
        var buildDetails = buildServer.QueryBuilds(teamProjects[0].Name);

        // For each build
        foreach (IBuildDetail buildDetail in buildDetails)
        {
            // Get the build details
            var buildInfor = buildDetail.Information;

            // More build infor like shelveset, etc
            Debug.Write(buildDetail.LabelName + buildDetail.ShelvesetName);

        }

上面的代码将帮助您以编程方式获取构建详细信息。我有一些关于如何以编程方式连接到tfs并使用tfs api的博客文章。 http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx