如何在我的自定义模板中访问 TFS 工作流变量?

How do I access TFS Workflow Variables in my Custom Template?

我创建了一个 CodeActivity 用于自定义 TFS 构建模板。 activity 有 3 个自定义 InputArguments:

  1. TfsBuildProcessTemplatesFolder(...或我要构建的任何相对路径)
  2. TfsDropFolder
  3. TfsSourceFolder

但是,我没有在可用工作流变量列表中看到任何熟悉的 TFS 变量。不过,我愿意 "build" 来自公共变量的相对路径。

我正在寻找以下变量:

错误:
这告诉我我使用了错误的变量

Validation Error: The private implementation of activity '1: DynamicActivity' has the following validation error:   Compiler error(s) encountered processing expression "BuildDir".
'BuildDir' is not declared. It may be inaccessible due to its protection level.

我的问题:

...诸如此类。

工作流变量...

我的代码:
如果您需要它...

namespace Custom.Activities.NuGet
{
    using System;
    using System.Linq;
    using System.Activities;
    using Microsoft.TeamFoundation.Build.Workflow.Activities;
    using Microsoft.TeamFoundation.Build.Client;
    using Microsoft.TeamFoundation.Build.Workflow.Tracking;

    [BuildActivity(HostEnvironmentOption.All)]
    [ActivityTracking(ActivityTrackingOption.ActivityOnly)]
    public sealed class CreateNuGetPackages : CodeActivity
    {
        #region <Properties>

        #region inputs

        public InArgument<string> TfsBuildResourcesFolder { get; set; }
        public InArgument<string> TfsDropFolder { get; set; }
        public InArgument<string> TfsSourceFolder { get; set; }

        #endregion

        #endregion

        #region <Methods>

        protected override void Execute(CodeActivityContext context)
        {
            // Do stuff here
        }

        #endregion
    }
}

您可以在其中一个工作流选项卡中查看可用于工作流的变量列表 - 如果您的定义配置给出了值,则可能会对变量、可选参数选项卡感兴趣

正如 Mike 所说,变量是在工作流范围内定义的——通常是序列和其他块类型的活动。如果您要查找的变量未出现在列表中,则它在当前 open/selected 范围内不可用。您可以在更高的范围内定义自己的变量并为其赋值以供稍后在不同部分使用。

属性的 Intelli-sense 应该有可见的可用变量。