【发布时间】:2015-09-30 12:13:54
【问题描述】:
我试图做一些类似于下面引用的 stackoverflow 文章的事情,但我发现我无法在代码活动中设置值。我似乎能够读取值。我怀疑这与这些的范围有关。在stackoverflow文章中,代码暗示该变量是为循环设置的,
我正在寻求有关如何正确设置这些或如何让我的代码活动标记退出外部 DoWhile 循环的指导?
【问题讨论】:
我试图做一些类似于下面引用的 stackoverflow 文章的事情,但我发现我无法在代码活动中设置值。我似乎能够读取值。我怀疑这与这些的范围有关。在stackoverflow文章中,代码暗示该变量是为循环设置的,
我正在寻求有关如何正确设置这些或如何让我的代码活动标记退出外部 DoWhile 循环的指导?
【问题讨论】:
好的,这是缺少的故事,不在我找到的 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;
}
}
}
【讨论】: