TFS 2017 vNext构建定义变量能否用下拉菜单?如何实现?
在TFS 2017 vNext构建定义中为变量添加下拉菜单的实现方法
当然可以搞定!在TFS 2017的vNext构建系统里,虽然默认情况下变量都是不可修改的字符串类型,但我们确实能给变量加上下拉菜单,而且这些选项在队列构建的时候完全能选。我给你分享两种靠谱的实现方法:
方法一:手动编辑构建定义JSON(快速上手)
这种方法不需要额外开发,适合快速给单个构建定义添加下拉变量:
- 打开你的vNext构建定义,点击右上角的**「导出」**按钮,把当前定义导出为JSON文件。
- 用任意文本编辑器打开这个JSON文件,找到
variables节点。比如原来的变量定义可能是这样的:
"variables": { "BuildEnvironment": { "value": "win7", "allowOverride": true } }
- 我们给目标变量添加
options属性,修改后的代码如下:
"variables": { "BuildEnvironment": { "value": "win7", "allowOverride": true, "options": { "win7": "Windows 7", "win10": "Windows 10" } } }
这里options里的键是实际传递给构建流程的取值,值是显示在下拉菜单里的友好名称。重点注意:一定要把allowOverride设为true,否则队列构建时无法修改这个变量。
- 保存修改后的JSON文件,回到TFS的构建定义页面,点击右上角的**「导入」**,选择修改后的文件覆盖原定义。
- 刷新页面后,你就能看到这个变量变成了下拉菜单样式,队列构建时也能自由选择不同的构建环境。
方法二:自定义构建任务(适合团队复用)
如果你们团队需要在多个构建定义中复用这类下拉变量,或者需要更复杂的逻辑控制,自定义构建任务会更灵活:
- 打开TFS的「构建和发布」中心,进入「任务库」,选择「创建任务」。
- 在任务的
task.json配置文件中,定义一个类型为pickList的输入参数,示例代码如下:
"inputs": [ { "name": "BuildEnvironment", "type": "pickList", "label": "构建环境", "defaultValue": "win7", "options": { "win7": "Windows 7", "win10": "Windows 10" }, "required": true, "allowOverrideInQueue": true } ]
这里的allowOverrideInQueue设置为true,确保队列构建时可以修改选择。
- 把这个自定义任务打包上传到TFS的任务库中,之后在你的vNext构建定义里添加这个任务,就能看到对应的下拉选项了。
额外注意事项
- 两种方法的核心都是确保变量/任务输入允许在队列构建时被修改,否则下拉菜单只会在编辑构建定义时可见,队列构建时无法调整。
- 旧版XAML构建系统原生支持下拉变量,但vNext构建系统是通过扩展定义的方式实现,本质上是利用了TFS的自定义扩展能力。
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

