使用 Team City 和 Octopus Deploy 时设置 dotnet 核心项目的版本?

Setting version of dotnet core project when using Team City and Octopus Deploy?

我有一个要构建和部署的 dotnet 核心项目。

目前我在TC中有三个步骤;

在 OD 中,我希望使用 OD 在内置存储库中收到的包中标记的版本。

差不多可以了!

但是!

TC 总是生成类似 Ajf.IdentityServer.1.0.0-54.nupkg 的文件(第 2 步,dotnet pack)。

第 2 步,dotnet pack,有一个选项 - 版本后缀 - 我目前使用的是 %build.counter%.

我希望版本为 1.0.0.54,而不是 1.0.0-54。

OD貌似没问题(我可以部署那些畸形的版本),但就是感觉……不对?

如何使用 TC 计算的 'right' 版本标记我的版本?

谢谢! ;)

您可以引入额外的 属性 以在 MSBuild 中使用。

如果您修改您的 csproj 以设置这样的版本以引入自定义 BuildNumber 属性,默认为 0:

<PropertyGroup>
  <BuildNumber Condition="'$(BuildNumber)' == ''">0</BuildNumber>
  <VersionPrefix>1.2.3.$(BuildNumber)</VersionPrefix>
</PropertyGroup>

然后您可以将 BuildNumber 作为附加参数传递给所有相关的 dotnet 调用:

dotnet pack -c Release /p:BuildNumber=%build.counter%

到目前为止,最简单的方法是

/p:PackageVersion=1.2.%build.number%

这样做的好处是您不必以任何方式修改您的 csproj 文件。