代码之家  ›  专栏  ›  技术社区  ›  Alex 75

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

  •  0
  • Alex 75  · 技术社区  · 6 年前

    0.1.3$(Rev:.r)-alpha .

    enter image description here

    我使用该变量替换.net核心项目文件中的“Version”。

    在构建任务中 dotnet构建 告诉我这个错误:

    enter image description here

    有没有别的方法或者不同的语法?


    嵌套变量应该可以工作。 我认为错误是dotnet包使用的自动包版本控制设置为“使用内部版本号”包含错误的 $(rev:.r) (小写!)。

    在VS项目文件中为版本使用自定义字符串会在VS上发出噪音(如果文件打开,则会出错,否则会发出警告),现在管道生成会在dotnet nuget restore上发出错误,因为版本无效。

    我决定用一个简单干净的版本, <Version>0.1.2</Version> ,我可以选择并记录。
    0.1.2$(版次:r) =>0.1.2.123

    这就是我想要的结果。

    我发现这个: https://marketplace.visualstudio.com/items?itemName=tmarkovski.projectversionasvariable

    enter image description here

    我使用它创建的变量组成一个新变量“package version”:

    enter image description here

    nuget包 任务:

    enter image description here

    但它不起作用。
    结果变量仍包含“$(版次:r)“未解析。

    我将再次尝试使用“自动包版本控制”并在选项中创建内部版本号。。。

    [编辑2]

    这不是最佳的解决方案,因为内部版本号没有被解析,看起来很糟糕。

    enter image description here

    enter image description here

    $(Rev:.r) 在内部版本/选项之外不可用。
    我曾经 $(Build.BuildNumber) $(Version.MajorMinor).$(Build.BuildNumber)-alpha

    内部版本号 在内部版本/选项中设置了值: $(Build.DefinitionVersion)$(Rev:.r)

    版本.MajorMinor 是由 Project Version As Build Variable 附加组件。
    我不知道如何在不使用第三方组件的情况下获得相同的结果。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Tomislav Markovski    6 年前

    我很高兴我的分机帮助了我,谢谢你的好评。如果您想要更多的控制,并且有一点时间来使用PowerShell,您可以通过两个步骤轻松实现您想要的,而无需使用第三方扩展。

    • 读取.csproj文件并将其解析为XML

    https://www.business.com/articles/powershell-read-xml-files/

    VSTS: Pass build/release variables into Powershell script task

    [xml]$XmlDocument = Get-Content -Path $env:project_file
    
    echo $XmlDocument.Project.PropertyGroup.Version
    

    https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=vsts&tabs=yaml%2Cbatch

    Write-Host '##vso[task.setvariable variable=package_version;issecret=true]0.1.2.'
    

    注:我的答案不适合评论,我必须张贴一个答案。