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

时间:2017-07-03 17:59:39

标签: teamcity .net-core octopus-deploy

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

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

  • dotnet restore
  • dotnet pack
  • 章鱼展开:推送

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

它几乎可以工作!

然而!

TC始终构建为Ajf.IdentityServer.1.0.0-54.nupkg等文件(步骤2,dotnet pack)。

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

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

显然,OD没有问题(我可以部署那些格式错误的版本),但它感觉......错了吗?

如何使用'右键'标记我的版本?由TC计算的版本?

谢谢! ;)

2 个答案:

答案 0 :(得分:2)

您可以引入一个在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%

答案 1 :(得分:1)

截至目前,实现这一目标的最简单方法是

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

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