微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过Azure DevOpsyml包装预发行的nuget程序包? 1 2 3

如何解决如何通过Azure DevOpsyml包装预发行的nuget程序包? 1 2 3

我试图使用以下yml设置软件包版本,但是我仍然收到错误消息 ##[error]No value was found for the provided environment variable.执行dotnetcli任务时。

trigger:
- master

name: 0.1.2-prerelease.$(Date:yyMM)$(DayOfMonth)$(Rev:rr)

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildplatform: 'Any cpu'
  buildConfiguration: 'Release'
  nugetVersion: 0.1.2-prerelease.$(Date:yyMM)$(DayOfMonth)$(Rev:rr)

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildplatform)'
    configuration: '$(buildConfiguration)'


- task: DotNetCoreCLI@2
  inputs:
    command: 'pack'
    packagesToPack: '$(Build.sourcesDirectory)/src/**/*.csproj'
    nobuild: true
    versionEnvVar: '$(nugetVersion)'
    versioningScheme: 'byEnvVar'

解决方法

如何通过Azure DevOps(yml)包装预发行的nuget程序包?

有两种选择

1

如果要在nuget版本中使用$(Date:yyMM)$(DayOfMonth)$(Rev:rr),直接实现此目的的方法是使用byBuildNumber

2

使用Shayki Abramczyk所述的$(build.BuildNumber)

- task: DotNetCoreCLI@2
  inputs:
    command: 'pack'
    packagesToPack: '$(Build.SourcesDirectory)/src/**/*.csproj'
    nobuild: true
    versionEnvVar: '$(build.BuildNumber)'
    versioningScheme: 'byEnvVar'

3

但是如果byBuildNumber不是您的选择,我们需要创建自己的$(Date:yyMM)$(Rev:rr) 。那是因为无法在变量中解析那些$(Date:yyMM)$(Rev:rr)变量。

您可以在我的against中查看详细信息。

要创建$(Date:yyMM),我们可以解析pipeline.startTime的日期以获得$(Date:yyMM)$(DayOfMonth)的值:

variables:
  date: '$[format('{0:yyMMdd}',pipeline.startTime)]'

然后我们创建$(Rev:rr),我们可以使用一个计数器,例如:

variables:
  InternalNumber: '1'
  CounterNumber: '$[counter(variables['InternalNumber'],1)]'

现在,nugetVersion的变量可能是:

variables:
  date: '$[format('{0:yyMMdd}',pipeline.startTime)]'
  InternalNumber: '1'
  CounterNumber: '$[counter(variables['InternalNumber'],1)]'
  nugetVersion: '0.1.2-prerelease.$(date)$(CounterNumber)'

作为测试结果:

previous thread

,

由于您指定了byEnvVar,因此只需要给变量 name ,当与$()一起使用时,就给变量 value ,不是名称

因此,只需将其更改为:

versionEnvVar: 'nugetVersion'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。