从CLI重写NuGet包版本

时间:2017-10-05 10:57:12

标签: nuget .net-core nuget-package dotnet-cli

我喜欢在我的CICD管道中为NuGet包使用内部版本号或其他一些计算版本号。本质上,我喜欢开发人员控制主要和次要版本号,但会自动增加构建。

使用nuget.exe我可以使用-Version开关覆盖最终包中的版本。但是,对于.NET Core 2.0库项目,这会失败,我必须使用dotnet pack,请参阅:

https://github.com/NuGet/Home/issues/4491

--version-prefix只是dotnet pack CLI参数,那么如何完全覆盖版本?

1 个答案:

答案 0 :(得分:4)

您可以使用几乎没有记录的/p选项:

dotnet pack /p:PackageVersion=2.1.0

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack?tabs=netcore2x

显然,你可以在CICD工具中结合使用它,就像VSTS一样:

/p:Version=$(Build.BuildNumber)
  

注意当" pack"时,VSTS有一些在.NET Core构建任务中进行自动版本控制的选项。是动词(预览截至2017年10月5日)。

我在VSTS上的最终解决方案是使用带有dotnet pack设置的.NET Core Use the build number任务以及以下内容作为构建定义选项中设置的内部版本号格式:

2.0.$(Build.BuildId)

工程师需要在进行大量或重大更改时更改版本。我在代码中更喜欢这个;有一天,我会编写一些脚本来将.csproj中的数字提升到构建系统中。