是否有用于工作空间映射的构建变量

时间:2019-08-09 15:50:24

标签: c# tfs azure-devops

在DevOps构建模板中,我使用构建变量$(Build.SourceBranch)在源控件中检索解决方案的源路径。但是,如果如图所示指定了多个工作空间映射,则该变量为空。是否有一个构建变量,如果指定了多个变量,则可以返回第一个工作空间映射,或者可以返回正在构建的解决方案的源路径。

enter image description here

2 个答案:

答案 0 :(得分:1)

Build.Repository.Tfvc.Workspace

有关预定义变量的完整列表,请参见documentation

  

定义您的存储库是否为Team Foundation版本控制。构建代理使用的TFVC工作空间的名称。

     

例如,如果Agent.BuildDirectory为c:\ agent_work \ 12且Agent.Id为8,则工作空间名称可能为:ws_12_8

     

此变量是代理作用域的,可以用作脚本中的环境变量和构建任务中的参数,但不能用作构建号的一部分或用作版本控制标记。

但是

我不确定要查找的是工作空间的实际名称。您提到要到.sln的路径,所以我假设您试图通过它来构建它。是吗?

在这种情况下,您应该将本地(读取:代理)工作空间映射定义为变量,以便可以告诉构建任务在该路径过滤器下构建.sln文件。当然,变量的使用是可选的,但是我更喜欢在各处使用变量来对字符串值进行“硬编码”。面对现实吧。打字很难!

将映射路径存储在变量中

enter image description here

在映射中使用var

enter image description here

在var映射下构建.sln

enter image description here

答案 1 :(得分:1)

不,我们没有这种变量可以在构建代理中获取工作空间映射。只需使用bool obscureText = false; FocusNode _focusNode = FocusNode(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: Padding( padding: const EdgeInsets.all(24.0), child: Column( children: <Widget>[ TextFormField( focusNode: _focusNode, obscureText: obscureText, decoration: InputDecoration( suffixIcon: IconButton( icon: Icon(obscureText ? Icons.visibility_off : Icons.visibility), onPressed: () { setState(() => obscureText = !obscureText); Timer.run(() => _focusNode.unfocus()); }, ), ), ), TextField(), ], ), ), ); } ,它将返回构建已排队的分支。

但是,有多个映射时,源分支被设置为映射的最常见父级。它没有共同的父母,也许是空的。

以下是应该满足您要求的一些选项:

  • 定义变量“映射”,并在构建中使用它 脚本。
  • 编写脚本以查询构建定义对象并读取 存储在该对象中的映射。