Azure devops Azure DevOps-使用另一个变量(嵌套/组合变量)设置生成变量
在Azure DevOps中,我有一个管道变量“package version”,我使用Azure devops Azure DevOps-使用另一个变量(嵌套/组合变量)设置生成变量,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,在Azure DevOps中,我有一个管道变量“package version”,我使用0.1.3$(Rev:.r)-alpha设置它 我使用该变量替换.net核心项目文件中的“版本” 在生成任务中,dotnet生成给我以下错误: 所以我假设管道变量不能使用嵌套变量 还有其他的方法或不同的语法吗 [编辑] 嵌套变量应该可以工作。 我认为错误是dotnet包使用自动包版本控制设置为“使用内部版本号”,其中包含错误的$(rev:.r)(小写!) 在VS项目文件中为版本使用自定义字符串会对VS产生
0.1.3$(Rev:.r)-alpha设置它
我使用该变量替换.net核心项目文件中的“版本”
在生成任务中,dotnet生成给我以下错误:
所以我假设管道变量不能使用嵌套变量
还有其他的方法或不同的语法吗
[编辑]
嵌套变量应该可以工作。
我认为错误是dotnet包使用自动包版本控制设置为“使用内部版本号”,其中包含错误的$(rev:.r)
(小写!)
在VS项目文件中为版本使用自定义字符串会对VS产生干扰(如果文件处于打开状态,则会出现错误,否则会发出警告),现在管道生成会在dotnet nuget restore上显示错误,因为版本无效
我决定使用一个简单的干净版本,0.1.2
,我可以选择并记录它。
然后我想找到一种在构建管道中读取它的方法,并创建一个附加构建版本的自定义变量:
0.1.2$(修订版:.r)=>0.1.2.123
这就是我想要的结果。
我发现:
我使用默认设置。
我使用它创建的变量组成一个新变量“package version”:
我在nuget pack任务中使用它:
但它不起作用。
结果变量仍然包含未分析的“$(修订:.r)”
我将再次尝试使用“自动包版本控制”,并在选项中创建版本号
[编辑2]
在管道生成选项中设置生成版本号。
这不是最佳的解决方案,因为构建号没有被解析,看起来很糟糕
[解决方案]
$(修订版:.r)
在内部版本/选项之外不可用。
我使用并能够创建一个组合变量:
$(Version.MajorMinor)。$(Build.BuildNumber)-alpha
Build.BuildNumber在Build/Options:$(Build.DefinitionVersion)$(Rev.r)
Version.MajorMinor由加载项创建。
我不知道如何在不使用第三方组件的情况下获得相同的结果。我很高兴我的扩展提供了帮助,感谢您的好评。如果您希望获得更多的控制权,并且有一点时间来使用PowerShell,则无需使用第三方扩展,您可以通过两个步骤轻松实现所需的功能
- 读取.csproj文件并将其解析为XML
- 设置构建变量
这里有两个关于读取XML文件和使用构建变量的链接,实际上非常简单
注意:我的答案不适合评论,我必须发布一个答案。您确定可以解析名称吗?管道生成/选项/生成属性-生成编号格式中无法识别管道变量,并且在生成/选项之外无法识别$(Rev:.r)变量。我使用$(Build.BuildNumber)而不是$(Rev:.r)来组成一个变量,它可以工作。没有什么不寻常的。该变量未列为可用变量:
[xml]$XmlDocument = Get-Content -Path $env:project_file
echo $XmlDocument.Project.PropertyGroup.Version
Write-Host '##vso[task.setvariable variable=package_version;issecret=true]0.1.2.'