如何更正 Azure 管道中的包版本名称并删除构建 ID

How to correct package version name in Azure pipeline and remove build ID

我通过 CI/CD azure 管道为 dotnet 标准项目制作了一个块包。 我使用以下 yml 来定义版本。

variables:
  buildConfiguration: 'Release'
  Major: '1'
  Minor: '1'
  Patch: $[counter(variables['minor'], 1)]
...
...
- task: DotNetCoreCLI@2
 displayName: 'Preparing build artifacts'
 inputs:
     command: pack
     publishWebProjects: false
     arguments: ' --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
     packagesToPack: '**/Package.csproj'
     versioningScheme: byPrereleaseNumber
     majorVersion: '$(Major)'
     minorVersion: '$(Minor)'
     patchVersion: '$(Patch)'

包构建正确,我可以通过我的发布管道发布它。 问题是,包是用一个版本后缀不断附加到它构建的。 例如:

Package 1.0.0-CI-20201203-170521

并且后缀发生变化,因为它是由 azure devops 从实际时间派生的。 我想从我的版本命名中删除这个后缀。 我不需要它,因为我的补丁版本已经很好地增加了,即使没有它,我所有的包也会有一个唯一的版本。

我试过添加

<VersionSuffix>MySuffix</VersionSuffix>

在我的 csproj 中,但它没有改变任何东西。我尝试了几种命名包版本的方法, 但没有任何效果。请问有人有解决办法吗?

您可以使用byEnvVar来实现您的版本控制

- pwsh: |
    $packageVersion = '$(Major).$(Minor).$(Patch)'
    Write-Host "##vso[task.setvariable variable=PackageVersion;]$packageVersion"
- task: DotNetCoreCLI@2
  displayName: 'Preparing build artifacts'
  inputs:
     command: pack
     publishWebProjects: false
     arguments: ' --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
     packagesToPack: '**/Package.csproj'
     versioningScheme: byEnvVar
     versionEnvVar: 'PACKAGEVERSION'

否则,如果您 select 进行版本控制,您将被迫使用一些预定义的格式: