Azure DevOps 管道任务 NetCoreCLI 包。 AutoVersion 但保持 Major.Minor.Patch 不变
Azure DevOps pipeline task NetCoreCLI pack. AutoVersion but keep Major.Minor.Patch unchanged
我在同一个存储库中有多个 NuGet 包。我想将我的包自动版本化为 $Major.$Minor.$Patch-CI-$DateTimeStamp。 $Major.$Minor.$Patch-CI-$rev 也可以。
如果我知道原始版本是什么,将使NuGet包更容易理解。我还可以确保我的开发 NuGet 包的版本高于我的主 NuGet 包。我不想手动设置 Major、Minor 和 Patch 变量,因为解决方案中有多个 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 pipeline task NetCoreCLI pack. AutoVersion but keep Major.Minor.Patch unchanged
您应该在 YAML 文件中将 Major、Minor 和 Patch 定义为变量,并将它们作为参数传递给任务 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)'
Here 是提供一组很好的 yaml 示例的文档。
如果解决方案中有多个 NuGet 包,您可以为每个项目定义不同的 Major、Minor 和 Patch,例如 Major_Project1: '1'
,然后将其作为参数传递 majorVersion: '$(Major_Project1)'
。
或者,如果您不想在 YAML 文件中手动将 Major、Minor 和 Patch 定义为变量,您可以使用第二种方法,但有一点不同。
我们需要在项目文件 .csproj 中添加以下 VersionPrefix
和 VersionSuffix
属性:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<VersionPrefix>1.0.3</VersionPrefix>
<VersionSuffix></VersionSuffix>
</PropertyGroup>
</Project>
然后我们需要使用 DotNetCoreCLI custom donet 任务而不是带有参数 --version-suffix "pre9999"
:
的 nuget pack
任务
- task: DotNetCoreCLI@2
displayName: 'dotnet custom'
inputs:
command: custom
projects: '$(projectsNuGet)'
custom: pack
nobuild: true
arguments: '--version-suffix "pre9999"'
我在同一个存储库中有多个 NuGet 包。我想将我的包自动版本化为 $Major.$Minor.$Patch-CI-$DateTimeStamp。 $Major.$Minor.$Patch-CI-$rev 也可以。
如果我知道原始版本是什么,将使NuGet包更容易理解。我还可以确保我的开发 NuGet 包的版本高于我的主 NuGet 包。我不想手动设置 Major、Minor 和 Patch 变量,因为解决方案中有多个 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 pipeline task NetCoreCLI pack. AutoVersion but keep Major.Minor.Patch unchanged
您应该在 YAML 文件中将 Major、Minor 和 Patch 定义为变量,并将它们作为参数传递给任务 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)'
Here 是提供一组很好的 yaml 示例的文档。
如果解决方案中有多个 NuGet 包,您可以为每个项目定义不同的 Major、Minor 和 Patch,例如 Major_Project1: '1'
,然后将其作为参数传递 majorVersion: '$(Major_Project1)'
。
或者,如果您不想在 YAML 文件中手动将 Major、Minor 和 Patch 定义为变量,您可以使用第二种方法,但有一点不同。
我们需要在项目文件 .csproj 中添加以下 VersionPrefix
和 VersionSuffix
属性:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<VersionPrefix>1.0.3</VersionPrefix>
<VersionSuffix></VersionSuffix>
</PropertyGroup>
</Project>
然后我们需要使用 DotNetCoreCLI custom donet 任务而不是带有参数 --version-suffix "pre9999"
:
pack
任务
- task: DotNetCoreCLI@2
displayName: 'dotnet custom'
inputs:
command: custom
projects: '$(projectsNuGet)'
custom: pack
nobuild: true
arguments: '--version-suffix "pre9999"'