c# - 如何使用 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)
解决方案
我最终做了与 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 作为我的修订号和附加的发布类型。
这是显示两个变量配置的屏幕截图。
推荐阅读
- c++ - 由于将位字段类型转换为整数,Valgrind 未初始化字节错误
- pandas - 如何找到一组向量的所有三个向量子集的三重交叉计数?
- flutter - 之前在 Flutter 中是否可以有带有内容的标签栏?
- kubernetes - 如何减少在 Kubernetes 上检测节点故障的时间?
- apache-kafka - 如何生成输入数据并将其存储到本地文件以及我们如何使用 kafka 读取该输入生成文件的数据
- spring - 在 Spring 的 JmsListener 中实例化 IWebContext
- python - 如何限制可以传递给方法参数的允许值(使用类型提示允许静态代码分析)
- java - 春季启动任务以更新数据库中的外键
- azure - 如何将自动和手动同步选项与双向 Azure 同步数据一起使用?
- linux - vmlaunch 简单崩溃 ubuntu 16.04