0

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

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

我可以在我的构建定义中设置 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 变量设置为特定值,但我想要在构建定义中看到的设置值。

4

1 回答 1

1

这很容易:在您的自定义模板中,您将在构建模板的开头引用包含您的自定义活动的程序集

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

然后像这样调用活动

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

方括号引入了一个 VB 表达式。

一切都在 XAML 中完成。

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

于 2015-06-22T18:43:09.287 回答