【问题标题】:TFS Build Definition ConfigurationTFS 构建定义配置
【发布时间】:2016-01-20 23:58:09
【问题描述】:

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

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

假设源目录可能是 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 环境变量,但无法找出/找到这样做的解决方案。我可能一直在寻找错误的东西。

谢谢,

【问题讨论】:

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


    【解决方案1】:

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

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

    然后通过参数传递相对路径,并在代码内部组合起来。

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

    这是另一个有用的链接here

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 1970-01-01
      • 2016-03-25
      • 2019-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2016-08-27
      相关资源
      最近更新 更多