【问题标题】: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(&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,如果你真的不需要在一天内发布一个包的不同版本,它就可以工作。您还可以自定义脚本来定义您的版本增加规则。


如果针对多个框架,请参阅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,如下图所示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-25
      • 2018-04-27
      • 2020-03-29
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2014-08-04
      相关资源
      最近更新 更多