如何让VSTS不将构建变量名称中的点转换为下划线?
解决VSTS构建变量点转下划线的问题
这个问题我之前也踩过坑!VSTS(现在的Azure DevOps)默认会把构建变量名称里的点替换成下划线,这是它的内置处理逻辑,但确实有办法绕过这个限制,下面给你几个实用的方案:
方案1:用PowerShell手动设置带点的环境变量
如果你的任务是基于PowerShell的,可以在脚本开头添加这一行,把VSTS里的变量重新设为带点的进程级环境变量:
[Environment]::SetEnvironmentVariable("MY.VAR", "$(MY.VAR)", "Process")
设置完成后,后续的PowerShell步骤里就能直接用$env:MY.VAR访问,CMD步骤则可以用%MY.VAR%访问。
方案2:用CMD手动设置带点的环境变量
如果是CMD任务,直接执行这条命令即可:
set MY.VAR=$(MY.VAR)
注意这个设置只在当前CMD进程生效,如果后续还有其他任务需要用到这个带点的环境变量,需要在对应任务前重复这个操作,或者通过任务间的变量传递来共享。
额外说明
遗憾的是,VSTS并没有提供内置的转义方式来阻止它把点转成下划线——这个转换是硬编码的逻辑。所以最可靠的方式就是通过手动重新设置的方式,创建符合你需求的带点环境变量。如果你的脚本本身可以直接引用VSTS变量,也可以直接在脚本里用$(MY.VAR)的语法,跳过环境变量这一步。
内容的提问来源于stack exchange,提问作者UserControl
相关产品推荐
相关产品推荐

