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

时间:2015-01-22 22:12:28

标签: c# tfs2010 tfsbuild tfs2013

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

  1. TfsBuildProcessTemplatesFolder(...或我要构建的任何相对路径)
  2. TfsDropFolder
  3. TfsSourceFolder
  4. 但是,我没有在可用的工作流变量列表中看到任何熟悉的TFS变量。我愿意"建立"但是,来自公共变量的相对路径。

    我正在寻找变量:

    • $根
    • $根\ 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变量?
    • 我是否需要添加引用,以便在属性列表中显示正确的变量?
    • 或者,我是否应该使用公共对象来构建变量?

    ......那样的事情。

    工作流量变量......
    enter image description here

    我的代码:
    万一你需要它......

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

1 个答案:

答案 0 :(得分:2)

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

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

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