Azure devops Azure DevOps管道任务NetCoreCLI包。自动版本,但保持Major.Minor.Patch不变

Azure devops Azure DevOps管道任务NetCoreCLI包。自动版本,但保持Major.Minor.Patch不变,azure-devops,nuget,nuget-package,versioning,Azure Devops,Nuget,Nuget Package,Versioning,我在同一个存储库中有多个NuGet包。我想将我的软件包自动转换为$Major.$Minor.$Patch CI-$DateTimeStamp$主要。$次要。$补丁CI-$版本也可以 如果我知道原始版本是什么,它将使NuGet包更容易理解。我还可以确保我的dev-NuGet包的版本高于我的主NuGet包。我不想手动设置主要、次要和修补程序变量,因为解决方案中有多个NuGet包 以下尝试始终将Major.Minor.Patch设置为1.0.0 - task: DotNetCoreCLI@2 co

我在同一个存储库中有多个NuGet包。我想将我的软件包自动转换为$Major.$Minor.$Patch CI-$DateTimeStamp$主要。$次要。$补丁CI-$版本也可以

如果我知道原始版本是什么,它将使NuGet包更容易理解。我还可以确保我的dev-NuGet包的版本高于我的主NuGet包。我不想手动设置主要、次要和修补程序变量,因为解决方案中有多个NuGet包

以下尝试始终将Major.Minor.Patch设置为1.0.0

- task: DotNetCoreCLI@2
  condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
  inputs:
    command: 'pack'
    packagesToPack: $(projectsNuGet)
    nobuild: true
    versioningScheme: 'byPrereleaseNumber'
这根本不会改变版本

- task: DotNetCoreCLI@2
  displayName: DotNetCoreCLI pack !master
  condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
  inputs:
    command: 'pack'
    packagesToPack: $(projectsNuGet)
    nobuild: true
    arguments: --version-suffix pre9999
Azure DevOps管道任务NetCoreCLI包。自动版本,但保持Major.Minor.Patch不变

您应该在YAML文件中将主要、次要和修补程序定义为变量,并将它们作为任务的参数传递
DotNetCoreCLI

variables:
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:
- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: $(projectsNuGet)
    nobuild: true
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'
是提供一组优秀yaml示例的文档

如果解决方案中有多个NuGet包,则可以为每个项目定义不同的主、次和修补程序,如
Major\u Project1:'1'
,然后将其作为参数
majorVersion:'$(Major\u Project1)
传递

或者,如果不想在YAML文件中手动将Major、Minor和Patch定义为变量,可以使用第二种方法,但有一点不同

我们需要在项目文件中添加以下
VersionPrefix
VersionSuffix
属性。csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
  </PropertyGroup>

    <PropertyGroup>
    <VersionPrefix>1.0.3</VersionPrefix>
    <VersionSuffix></VersionSuffix>
  </PropertyGroup>

</Project>

此问题是否有更新?如果答案能给你一些帮助,请随时告诉我。只是提醒一下。(1)我在管道名称的顶部添加了:“$(日期:MMddyyyy)-(Rev:r)”,这样我就可以使用变量$(Build.BuildNumber)来获得依赖于时间戳的版本后缀(2)包现在是在$(Build.SourcesDirectory)而不是$(Build.ArtifactStagingDirectory)中创建的
- task: DotNetCoreCLI@2
  displayName: 'dotnet custom'
  inputs:
    command: custom
    projects: '$(projectsNuGet)'
    custom: pack
    nobuild: true
    arguments: '--version-suffix "pre9999"'