【问题标题】:How do I access TFS Workflow Variables in my Custom Template?如何在我的自定义模板中访问 TFS 工作流变量?
【发布时间】:2015-01-24 01:40:11
【问题描述】:

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

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

但是,我没有在可用工作流变量列表中看到任何熟悉的 TFS 变量。不过,我愿意从一个公共变量“构建”相对路径。

我正在寻找以下变量:

  • $root
  • $root\BuildProcessTemplates
  • $SourceDir
  • $DropFolder

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

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.

我的问题:

  • 为什么我看不到熟悉的 TFS 变量?
  • 我是否需要添加引用才能在属性列表中显示正确的变量?
  • 或者,我应该使用通用对象来构建变量吗?

...类似的事情。

工作流程变量...

我的密码:
以防万一……

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
    }
}

【问题讨论】:

  • 这是 TFS 2010 还是 2013?两者之间的默认工作流程完全不同。在我的 TFS 2013 工作流程中,有一些变量,例如 binDirectorysrcDirectory,它们是在“编译、测试和发布”范围内定义的。如果您在该范围之外添加此活动,它们将不可见。
  • 不确定是否不幸的截图购买 SourceLocation 不是变量而是类类型
  • @drk 我只是想显示我正在访问的变量在哪里......而不是列表本身。如果您愿意,我很乐意更新图像。您认为该图像的哪个亮点会更好?
  • 我尝试在“编译、测试和发布”范围内创建一个变量并将其范围设置为“总体”......但是......我得到了完全相同的变量列表(不是上面迈克列出的那些)。有人对此有任何示例和建议吗?
  • 我们使用的是 TFS 2013

标签: c# tfsbuild


【解决方案1】:

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

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

属性的智能感知应该有可用的变量可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2015-06-20
    相关资源
    最近更新 更多