【问题标题】:Auto-increment NuGet package version自动递增 NuGet 包版本
【发布时间】:2019-10-04 03:07:18
【问题描述】:
在 C#/.NET Standard 2.1 中使用“Generate NuGetPackage on Build”时,有没有办法自动增加 NuGet 包版本?
【问题讨论】:
-
在 VS 或 Azure Devops 中构建?如果你使用git管理版本,可以考虑使用GitVersion之类的工具。
-
标签:
nuget
visual-studio-2019
c#-8.0
【解决方案1】:
如果您通过构建服务器构建和发布项目,并通过 Git 管理版本,您可以尝试 MSBuild GitVersion 任务。对于类似的问题,请参阅here。
但是,如果您只想在本地 Visual Studio 中进行干净的构建和发布而不使用 Git,那么恐怕目前没有任何 Visual Studio 选项或 MSBuild task 来支持这种行为。您可以前往Developer Community 推荐该功能,因为这是一个有意义的想法,但目前不可用。
另外,根据提示from Martinand Alexandre,您可以将此脚本添加到xx.csproj:
<PropertyGroup>
<GenerateNuspecDependsOn>$(GenerateNuspecDependsOn);SetPackageVersion</GenerateNuspecDependsOn>
</PropertyGroup>
<Target Name="SetPackageVersion" DependsOnTargets="Build">
<PropertyGroup>
<!-- <PackageVersion>$([System.DateTime]::Now.ToString("yyyy.MM.dd.HHmmss"))</PackageVersion> -->
<!-- You can customize the format and the rule about how version increases here. -->
<PackageVersion>$([System.DateTime]::Now.ToString("1.MM.dd"))</PackageVersion>
</PropertyGroup>
</Target>
那么当你今天发布这个包时,它的版本是 1.10.4。明天的 1.10.5,如果你真的不需要在一天内发布一个包的不同版本,它就可以工作。您还可以自定义脚本来定义您的版本增加规则。
如果针对多个框架,请参阅Build project with multiple targetframeworks in TFS as a NuGet package
这在将程序集版本设置为通配符时有效。
<Deterministic>false</Deterministic>
<AssemblyVersion>3.0.*</AssemblyVersion>
【解决方案2】:
截至 toDate 使用 Visual Studio 2019 和 .NET 5.0,LoLance 关于在 .csproj 文件中编写增量脚本的建议仍然有效,我们现在可以直接在包定义的内部使用 shell 命令多个字段的PropertyGroup,如下图所示: