TemplatePath在我的构建定义文件中定义为字符串。
我有一个自定义的Build Activity类,它有一个属性:
public class MyActivity: NativeActivity {
public InArgurment<string> TemplatePath{ get; set;}
public void Execute(NativeActivityContext context){
//My Code goes here
}
}
我想要做的是能够将TF_BUILD_SOURCESDIRECTORY
环境变量的值传递给TemplatePath
。
让我们说sources目录可能是C:\ Build [BuildAgentId] [TFS_Project] [Build Definition] \ src,我希望能够在我的Execute方法中使用以下代码时收到此信息。
string templateLoc = TemplatePath.Get(context);
屏幕截图中有一个我尝试传入的值。无论我尝试传入哪个值,我仍然会从构建定义配置中的TemplatePath
集中收到确切的字符串。如何使TFS Build评估表达式以向我提供正确的路径:C:\ Build [BuildAgentId] [TFS_Project] [Build Definition] \ src \ Template \ Template.qvw
我一直在寻找和玩弄传递TFS BUILD环境变量的不同方法,但却无法找到/找到解决方案。我可能一直在寻找错误的东西。
谢谢,
答案 0 :(得分:0)
首先,您可以直接检索自定义活动代码中的环境变量,如下所示。
var sourceDirectory = System.Environment.GetEnvironmentVariable("TF_BUILD_SOURCESDIRECTORY");
然后通过参数传递相对路径并将其组合在代码中。
在您的情况下,您无法直接将环境变量作为字符串传递。它仅适用于MSDN提到的MSBuild参数。 (https://msdn.microsoft.com/en-us/library/hh850448.aspx)
这是另一个有用的链接here。