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 に答える