Azure devops Azure DevOps-使用另一个变量(嵌套/组合变量)设置生成变量

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产生

在Azure DevOps中,我有一个管道变量“package version”,我使用
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.'