Semver兼容自动递增预发行版本nupkg的版本号

时间:2019-01-09 22:57:36

标签: .net-core nuget semantic-versioning tfs2018

当我们开发新版本的nuget软件包时,我们经常需要每天多次生成同一nuget软件包的新的预发行版本。

要能够在我们的测试应用程序中使用新版本的预发行版nupkg,它必须为TFS触发的每个版本都获得一个新的预发行版。否则,nuget软件包管理器将不允许我们在使用的解决方案中更新nuget软件包,因为它无法检测到更新。

解决此问题的常用方法是在nuget软件包的预发行版本后缀中添加某种具有相同字符宽度的自动递增后缀。例如asp.net核心solves is this way

Microsoft.AspNetCore 3.0.0-preview-19058-0284

他们添加了一个后缀,该后缀始终为5个字符,而另一个后缀始终为4个字符,并确保它们在每次构建时都以semver兼容的方式递增。

如何使用本地TFS 2018实现相同的目标,即

  1. 如何生成一个数字(在我的情况下仅一个数字后缀就足够了),该数字始终具有相同的宽度(通过添加前导零)并且总是递增。

  2. 如何在预发布后缀后将此数字附加到nupkg版本。

1 个答案:

答案 0 :(得分:1)

我使用构建日期作为预发行版本的后缀。 在csproj中:

<PropertyGroup>
    <PackageOutputPath Condition="$(PackageOutputPath) == ''">$(OutputPath)</PackageOutputPath>
    <Title>MyAssembly</Title>
    <Version>1.0.0-$(Configuration)-$(Platform)-$([System.DateTime]::UtcNow.ToString(yyyyMMdd-HHmmss))</Version>
    <Authors>Me</Authors>
    <Copyright>Copyright © 2019</Copyright>
    <IncludeSymbols>true</IncludeSymbols>
</PropertyGroup>