【发布时间】:2019-05-17 00:50:41
【问题描述】:
在 Azure DevOps 中,我有一个管道变量“包版本”,我使用 0.1.3$(Rev:.r)-alpha 设置它。
我使用该变量替换 .net 核心项目文件中的“版本”。
在构建任务中,dotnet build 给了我这个错误:
所以我假设 Pipeline 变量不能使用嵌套变量。
有其他方法或不同的语法吗?
[编辑]
嵌套变量应该可以工作。
我认为错误是使用自动包版本控制设置为“使用内部版本号”的 dotnet 包包含错误的$(rev:.r)(小写!)。
在 VS 项目文件中为 Version 使用自定义字符串会在 VS 上产生噪音(如果文件打开则出错,否则会发出警告),现在 Pipeline Build 由于版本无效而在 dotnet nuget restore 上给我一个错误。
我决定使用一个简单的干净版本<Version>0.1.2</Version>,我可以选择并记录它。
然后我想找到一种方法在构建管道中读取它并创建一个附加构建版本的自定义变量:
0.1.2$(Rev:.r) => 0.1.2.123
这就是我想要的结果。
我发现了这个:https://marketplace.visualstudio.com/items?itemName=tmarkovski.projectversionasvariable
我正在使用它创建的变量来组成一个新变量,“包版本”:
我在 nuget pack 任务中使用它:
但它不起作用。
结果变量仍然包含未解析的“$(Rev:.r)”。
我将尝试再次使用“自动包版本控制”并在选项中创建内部版本号...
[编辑 2]
在 Pipeline Build Options 中设置构建版本号。
这不是最佳解决方案,因为内部版本号没有被解析并且看起来很糟糕。
[解决方案]
$(Rev:.r) 在构建/选项之外不可用。
我使用了$(Build.BuildNumber),并且能够创建一个组合变量:
$(Version.MajorMinor).$(Build.BuildNumber)-alpha
Build.BuildNumber 在 Build/Options 中得到验证:$(Build.DefinitionVersion)$(Rev:.r)
Version.MajorMinor 由 Project Version As Build Variable 插件创建。
我不知道如何在不使用第三方组件的情况下获得相同的结果。
【问题讨论】:
-
你确定这个名字可以解析
-
似乎在 Pipeline Build /Options / Build properties - build number 格式中无法识别 Pipeline 变量,并且在 Build / Options 之外无法识别 $(Rev:.r) 变量。我使用 $(Build.BuildNumber) 而不是 $(Rev:.r) 来组成一个变量,它可以工作。
-
没什么异常。该变量未列为可用:docs.microsoft.com/en-us/azure/devops/pipelines/build/…
标签: azure-devops azure-pipelines