TFS构建定义配置

时间:2015-11-13 22:19:07

标签: c# .net msbuild workflow build-definition

我的构建定义配置屏幕的第一个屏幕截图:enter image description here

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环境变量的不同方法,但却无法找到/找到解决方案。我可能一直在寻找错误的东西。

谢谢,

1 个答案:

答案 0 :(得分:0)

首先,您可以直接检索自定义活动代码中的环境变量,如下所示。

var sourceDirectory = System.Environment.GetEnvironmentVariable("TF_BUILD_SOURCESDIRECTORY");

然后通过参数传递相对路径并将其组合在代码中。

在您的情况下,您无法直接将环境变量作为字符串传递。它仅适用于MSDN提到的MSBuild参数。 (https://msdn.microsoft.com/en-us/library/hh850448.aspx

这是另一个有用的链接here