自定义活动中的TFS构建定义参数

时间:2015-06-22 15:31:31

标签: tfs tfsbuild build-definition

有一个构建定义模板,自定义参数'NpmEnabled'(如果我查看xaml模板的xml,它是

的一部分
<x:Members>
  <x:Property Name="NpmEnabled" Type="InArgument(x:Boolean)" />
</x:Members>

我可以在Build Definition中设置NpmEnable。

现在我有一个CustomActivity,并希望使用此设置。如何从上下文中获取此设置?

下一个代码不起作用......

[BuildActivity(HostEnvironmentOption.All)]
[ActivityTracking(ActivityTrackingOption.ActivityOnly)]
public sealed class NpmInstall : CodeActivity
{
    public InArgument<string> NpmEnabled { get; set; }

    public override void Execute(CodeActivityContext contect)
    {
        string x = context.GetValue<string>(this.NpmEnabled);
    }
}

这样我需要将工作流模板中的NpmEnabled变量设置为特定值,但我想要在构建定义中看到的设置值。

1 个答案:

答案 0 :(得分:1)

非常简单:在custom template中,您将在构建模板的开头引用包含自定义活动的程序集

<Activity xmlns:myns="clr-namespace:MyCompany.TfsBuild.Activities;assembly=MyCompany.TfsBuild.Activities"

然后调用此活动

<myns:NpmInstall NpmEnabled="[NpmEnabled]" />

方括号引入VB表达式。

一切都在XAML中完成。

请修复代码中的不一致:NpmEnabled变量声明为 Boolean ,而Activity属性的类型为 string