【问题标题】:TFS Build 2013 - Variable scope and custom activitiesTFS Build 2013 - 可变范围和自定义活动
【发布时间】:2015-09-30 12:13:54
【问题描述】:

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

我正在寻求有关如何正确设置这些或如何让我的代码活动标记退出外部 DoWhile 循环的指导?

参考文献 StackOverflow Article

Code Activity article

【问题讨论】:

    标签: tfs build


    【解决方案1】:

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

    虽然 MS 文档 In、InOut、Out args 它们的范围不共享...即

    错误的世界观

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

    公共 InOutArgument MyBoolInOut { get;放; }

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

    正确看待这种处理方式 自定义代码活动变量在 XAML 中可见,但与 XAML 参数不同。即

    如下所示,您的 C# 代码活动参数必须手动链接到 XAML 参数

    因此,即使 XAML 有参数,C# 有参数,它们也是分开的。

    这是 MS 可以大大改善他们的文档的领域。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 2015-01-24
      相关资源
      最近更新 更多