首页 > 解决方案 > 如何使用 VSTS 构建过程自动增加 nuget 包版本?

问题描述

在 MSDN 的这段视频中,在 3:34 秒标记处,演示者展示了如何将构建 ID 附加到 nuget 的版本。在 MSBuild 参数中,他指定:

/t:pack /p:PackageVersion=1.0.$(Build.BuildId)

因此,当项目由 VSTS 构建时,nuget 程序集的修订号使用构建 ID。

我想做类似的事情。我不想在构建定义中对 1.0 进行硬编码,而是想从 .csproj 文件中检索它。我正在使用.csproj存储 nuget 信息的新文件。

例如,我想在 csproj 中指定:

<Version>0.0.1-beta</Version>

然后,VSTS 将附加 BuildID 并将程序集版本生成为0.0.0.1-beta.49(49 是构建 ID)

标签: c#msbuildnugetazure-devopsdevops

解决方案


我最终做了与 Shayki Abramczyk 建议相反的事情。

我使用一个名为“变量任务包”的任务。它可以在这里找到(并且在这个答案的时候是免费的):https ://marketplace.visualstudio.com/items?itemName=YodLabs.VariableTasks#qna

使用这个任务,我设置了两个变量:$(BuildId) 和 $(ReleaseType)。请参阅答案末尾的设置快照。

然后,在我的 CSPROJ 项目文件中,我修改了 nuget 版本以使用这两个环境变量。这是项目文件的剪辑:

<PropertyGroup>
     <Version>0.0.0.0$(BuildId)$(ReleaseType)</Version>
     <FileVersion>0.0.0.0$(BuildId)$(ReleaseType)</FileVersion>
    ...
</PropertyGroup>

重要提示:请注意 $(BuildId) 前面的额外 0。我必须添加它才能在本地构建。没有它,构建失败并出现不正确的版本格式错误。

现在,在构建之后,我得到 buildid 作为我的修订号和附加的发布类型。

这是显示两个变量配置的屏幕截图。

BuildId 变量的设置 ReleaseType 变量的设置


推荐阅读