TFS Build 2013 - 可变范围和自定义活动

时间:2015-09-28 06:44:44

标签: tfs build

我试图做类似于下面引用的stackoverflow文章,并发现我无法在代码活动中设置值。我似乎能够读取值。我怀疑这与这些的范围有关。在stackoverflow文章中,代码暗示变量是为循环设置的,

  
    

我是关于如何正确设置这些或者我的codeactivity标记为退出外部DoWhile循环的方法的指导?

  

参考文献 StackOverflow Article

Code Activity article

My TFS Build Protoype

1 个答案:

答案 0 :(得分:1)

好的,这是失踪的故事,不在我找到的MS doco中。  例如https://msdn.microsoft.com/en-us/library/dd647551(v=vs.120).aspx

虽然MS文件In,InOut,Out args但它们的范围不是共享的......即

错误的世界观

像MyBoolInOut这样的XAML参数Inout与C#代码使用的参数相同,例如。

public InOutArgument MyBoolInOut {get;组; }

因此您只需要更改C#代码中的值以更改TFS XAML中的值

正确查看此处理 自定义代码活动变量在XAML BUT中可见,与XAML参数不同。即。

如下所示,您的C#codeactivity args必须手动链接到XAML args

所以尽管XAML有参数而C#有参数,但它们是分开的。

这是MS可以大大提高他们的doco的地区。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;
using Microsoft.TeamFoundation.Build.Workflow.Activities;

namespace SampleActivityLibrary
{
        [BuildActivity(HostEnvironmentOption.All)]

        // Sample Acitivty that will Flip a bool from True to False or from False to True
        public sealed class SampleFlipInOutBoolean : CodeActivity<Boolean>
        {
            public InOutArgument<Boolean> MyBoolInOut { get; set; }

            protected override Boolean Execute(CodeActivityContext context)
            {
                Boolean MyBool = context.GetValue(MyBoolInOut);
                context.TrackBuildWarning("SampleFlipInOutBoolean: In Value of Bool: " + MyBool.ToString(), BuildMessageImportance.High);

                MyBoolInOut.Set(context, !MyBool);
                MyBool = context.GetValue(MyBoolInOut);
                context.TrackBuildWarning("SampleFlipInOutBoolean: Out Value of Bool: " + MyBool.ToString(), BuildMessageImportance.High);

                return MyBool;

            }
        }
}

enter image description here