从 CLI 覆盖 NuGet 包版本

Override the NuGet package version from CLI

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

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

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

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

您可以使用几乎没有记录的 /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)

Note VSTS has a few options for automatic versioning within the .NET Core build task when "pack" is the verb (in preview as of 5th Oct 2017).

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

2.0.$(Build.BuildId)

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