TFS 2010问题,跟踪作为门控签入结果的生成中的变更集



为了检索哪个变更集包含在哪个Build中的信息,我们使用Team Foundation Sidekicks的"Label Sidekick",在那里我们放置Build的标签&期望找到新构建的变更集。

我们在TFS 2010中的开发过程使用了"Gated"签入,因此我们面临的情况是,Sidekicks中没有显示最新的签入(我们实际上收到了以前版本的变更集)。这是可以解释的,因为在贴标签的时候,还没有做出最新的改变。

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

我在构建过程模板中做了几个实验,但似乎无法得到我们需要的东西。例如,将Labeling活动置于"Run On Agent"范围之外,会导致构建一开始就失败,并带有"Object reference not set to a instance of a Object"(对象引用未设置为对象实例)。(我想这与我不得不扩大"Label"one_answers"Workspace"变量的范围以运行第二部分有关)
此尝试的生成过程模板的"before"状态在此处(有效),"after"状态("Object ref not set..")在此处。

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

我应该如何更改我们的构建过程模板,以便在提交Gated签入后进行标记?(--这将使Sidekicks中的显示合理化)

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

您可以使用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

相关内容

  • 没有找到相关文章

最新更新