自动增量 NuGet 包版本

6

当使用C#/.NET Standard 2.1中的"生成NuGet包时自动递增包版本"功能,是否有一种方法可以实现?


在VS中构建还是使用Azure DevOps之类的工具?如果您使用git来管理版本,可以考虑使用GitVersion这样的工具。 - LoLance
你好Jonathan,这个问题有什么更新吗? - LoLance
2个回答

4

如果你使用构建服务器来构建和发布项目,并通过Git管理版本,那么可以尝试使用MSBuild GitVersion 任务。如果遇到类似问题,请参见这里

但是,如果你只想在本地使用Visual Studio进行干净的构建和发布而不使用Git,则恐怕目前没有任何Visual Studio选项或MSBuild任务支持此功能。你可以去开发者社区提出建议,因为这是一个有意义的想法,但目前还不可用。

此外,根据 MartinAlexandre 的提示,您可以将此脚本添加到 xx.csproj 中:
  <PropertyGroup>
    <GenerateNuspecDependsOn>$(GenerateNuspecDependsOn);SetPackageVersion</GenerateNuspecDependsOn>
  </PropertyGroup>

  <Target Name="SetPackageVersion" DependsOnTargets="Build">
    <PropertyGroup>
      <!-- <PackageVersion>$([System.DateTime]::Now.ToString(&quot;yyyy.MM.dd.HHmmss&quot;))</PackageVersion> -->
      <!-- You can customize the format and the rule about how version increases here. -->
      <PackageVersion>$([System.DateTime]::Now.ToString(&quot;1.MM.dd&quot;))</PackageVersion>
    </PropertyGroup>
  </Target>

当你今天发布包时,它的版本是1.10.4。如果明天需要1.10.5版本,只要不需要在一天内发布不同版本的包,就可以正常工作。另外,您可以自定义脚本来定义增加版本号的规则。
如果需要针对多个框架进行定位,请参阅在TFS中使用多个目标框架构建项目作为NuGet包 当将程序集版本设置为通配符时,此方法有效。
<Deterministic>false</Deterministic>
<AssemblyVersion>3.0.*</AssemblyVersion>

1
截至日期toDate,在使用Visual Studio 2019和.NET 5.0时,LoLance建议在.csproj文件中编写增量脚本仍然有效,我们现在可以直接在包定义的PropertyGroup中使用Shell命令来处理多个字段,如下图所示。请注意,需要保留HTML标签。

Proof of concept


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接