如何解决如何通过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)'
作为测试结果:
,由于您指定了byEnvVar
,因此只需要给变量 name ,当与$()
一起使用时,就给变量 value ,不是名称。
因此,只需将其更改为:
versionEnvVar: 'nugetVersion'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。