我试图做类似于下面引用的stackoverflow文章,并发现我无法在代码活动中设置值。我似乎能够读取值。我怀疑这与这些的范围有关。在stackoverflow文章中,代码暗示变量是为循环设置的,
我是关于如何正确设置这些或者我的codeactivity标记为退出外部DoWhile循环的方法的指导?
答案 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;
}
}
}