【问题标题】:How to set "PreviousBuild" property of AssociateChanges activity in TFS Builds如何在 TFS 构建中设置 AssociateChanges 活动的“PreviousBuild”属性
【发布时间】:2016-02-08 05:53:28
【问题描述】:

我想在我们的自定义构建定义(TFS2013 Update 2、VS2013、Git)中使用 Microsoft.TeamFoundation.Build.Activities.AssociateChanges 活动。

我想设置此活动的 PreviousBuild 属性,类型为 IBuildDetail,以引用特定的 TFS 构建,例如“CustomBuild_20151007.3”。

问题如何在“属性”窗口中设置 AssociateChanges 活动的 PreviousBuild 属性(如下截图),还是必须创建自定义构建活动? p>

MSDN reference 没有示例代码,到目前为止,我只看到从 CodeActivityContext 获得 IBuildDetail(在 CodeActivity 派生类中)。知道如何实例化它以将其作为属性值传递吗?

【问题讨论】:

    标签: tfs tfsbuild


    【解决方案1】:

    您需要创建一个自定义构建活动,通过 tfs api 传递 IBuildDetail 参数。

    来自 MSDN 的 IBuildDetail 接口: https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail(v=vs.120).aspx

    关于如何使用IBuildDetail,一个使用IBuildDetail的查询构建定义示例供参考:

    class Program
    {
        static void Main(string[] args)
        {
            // Auth with UserName & Password (Microsoft Acc):
            //BasicAuthCredential basicCred = new BasicAuthCredential(new NetworkCredential("xxx@hotmail.com", "pw"));
            //TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
            //tfsCred.AllowInteractive = false;
            //
            //TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("https://code-inside.visualstudio.com/DefaultCollection"), tfsCred);
    
            TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("https://code-inside.visualstudio.com/DefaultCollection"));
    
            IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
    
            var builds = buildServer.QueryBuilds("DrinkHub");
    
            foreach (IBuildDetail build in builds)
            {
                var result = string.Format("Build {0}/{3} {4} - current status {1} - as of {2}",
                    build.BuildDefinition.Name,
                    build.Status.ToString(),
                    build.FinishTime,
                    build.LabelName,
                    Environment.NewLine);
    
                System.Console.WriteLine(result);
            }
    
            // Detailed via http://www.incyclesoftware.com/2012/09/fastest-way-to-get-list-of-builds-using-ibuildserver-querybuilds-2/
    
            var buildSpec = buildServer.CreateBuildDetailSpec("DrinkHub", "Main.Continuous");
            buildSpec.InformationTypes = null;
            var buildDetails = buildServer.QueryBuilds(buildSpec).Builds;
    
            Console.WriteLine(buildDetails.First().Status);
    
            Console.ReadLine();
        }
    }
    

    【讨论】:

    • 谢谢你,帕特里克!我已将您的回复标记为答案。我仍然希望有人能解释“Previous Build”属性的用途和用途,因为很难相信一个字段会无缘无故地暴露为属性......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2023-03-25
    相关资源
    最近更新 更多