从 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
提升到构建系统中。
我喜欢在我的 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
提升到构建系统中。