如何在VSTS中从一个nuspec生成发布和预发布包?

时间:2017-08-09 22:56:50

标签: nuget azure-devops azure-pipelines nuspec azure-artifacts

目前,我的版本每次都会生成具有更新版本的软件包:

Release: Automatic package versioning = Use the build number
Pre-release: Additional build properties = Version=$(user.BuildFullVersion)-beta

唯一一个nuspec有一个占位符版本:

<version>$version$</version>

我想手动增加版本,重复版本会生成相同的版本,直到我手动增加它。

如何才能实现仍然拥有单一nuspec?

我可以在包装任务中调整包装版本,如下所示:

Release: $(PackageVersion) = $(PackageVersion)
Pre-release: $(PackageVersion) = $(PackageVersion)-beta

或类似的东西。

1 个答案:

答案 0 :(得分:4)

要通过nuspec生成两个包,你可以使用两个NuGet任务(NuGet自定义而不是NuGet包):

NuGet任务:

命令:自定义

命令和参数:

pack $(Build.SourcesDirectory)\Package.nuspec -Version $(Build.BuildNumber) -OutputDirectory $(build.artifactstagingdirectory)

NuGet任务:

命令:自定义

命令和参数:

pack $(Build.SourcesDirectory)\Package.nuspec -Version $(Build.BuildNumber) -Suffix beta -OutputDirectory $(build.artifactstagingdirectory)

如果您想将$(Build.BuildNumber)设置为MyProject-Daily_1.0.94.0,而您想将nuget包的版本添加为1.0.94.0,则可以在构建定义中定义变量并设置切割$(Build.BuildNumber)的子字符串的值。详细步骤如下:

变量标签中,添加任意值的变量(例如version)(例如temp)。

enter image description here

使用设置

在NuGet任务之前添加 PowerShell任务

类型:内联脚本

内联脚本:

$s1=$(Build.BuildNumber).split('_')[1].split(' ')
Write-Host "##vso[task.setvariable variable=version]$s1"

然后在NuGet自定义任务中,使用$(version)替换$(Build.BuildNumber) -version选项。例如nuget pack -version $(version)