【问题标题】:Setting version of dotnet core project when using Team City and Octopus Deploy?使用 Team City 和 Octopus Deploy 时设置 dotnet core 项目的版本?
【发布时间】:2023-03-15 10:34:01
【问题描述】:

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

目前我在TC有三个步骤;

  • dotnet 恢复
  • dotnet 包
  • 章鱼部署:推送

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

它几乎可以工作了!

但是!

TC 始终构建到 Ajf.IdentityServer.1.0.0-54.nupkg 之类的文件(第 2 步,dotnet 包)。

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

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

显然,在 OD 中没有问题(我可以部署那些格式错误的版本),但只是感觉……不对?

如何使用 TC 计算的“正确”版本标记我的版本?

谢谢! ;)

【问题讨论】:

  • 现在有一种更简单的方法。

标签: teamcity .net-core octopus-deploy


【解决方案1】:

您可以引入一个附加属性以在 MSBuild 中使用。

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

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

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

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

【讨论】:

  • 赞成,但由于某种原因它没有更改版本号。 TeamCity 只创建 1.2.0,而不是 1.2.%build.number%。
  • 但是还有另一种方法。我会添加它作为答案。
  • 在这里就像一个魅力。你确定 build.number 实际上不是 0 吗?
【解决方案2】:

到目前为止,实现这一目标的最简单方法是

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

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

【讨论】:

  • 它只是不设置程序集版本,并且要求构建定义包含1.2 部分,如果可以的话。
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多