我正在尝试创建 Azure 管道构建、测试并将 nuget 包部署到 Azure 源以进行工作。除了我希望各个项目有自己的版本号之外,我一切正常。我到处搜索过,但似乎找不到任何有帮助的东西。这是我的要求:
<Version>Z.0.0</Version>
(其中 Z 是上述相应的数字)。但我很乐意将其更改为任何需要做的事情。这是我目前的 yaml 文件:
trigger:
branches:
include:
- main
- develop
pool:
vmImage: 'windows-latest'
variables:
solution: '**/App.Common.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
command: 'restore'
feedsToUse: 'config'
nugetConfigPath: '.\nuget.config'
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:SkipInvalidConfigurations=true /p:Version=$(Build.BuildNumber)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@3
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*Tests.dll
!**\*TestApp.dll
!**\obj\**
- task: CopyFiles@2
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: '**/$(BuildConfiguration)/**/?(*.nupkg|*.symbols.nupkg)'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: CmdLine@2
displayName: 'List files'
inputs:
script: |
tree $(Agent.WorkFolder)\1 /f
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'REDACTED'
通过此构建,我得到这些数字:20241027.1.0.0
我尝试在 yaml 文件顶部设置“名称”,如下所示:
name: '1.0.0.$(Rev:r)'
,它适用于创建增量构建,如 1.0.0.1、1.0.0.2 等,但一切都是 1.0.0。
任何帮助将不胜感激。即使我必须为每个包添加单独的构建步骤以对它们进行不同的版本。
经过多次尝试和错误,我在我的 yaml 中发现了这些错误以及我所做的更改的组合:
/p:Version=$(Build.BuildNumber)
。name:
属性。 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<!--x.x.Days Since 1/1/2024-->
<CustomBuildNumber>$([MSBuild]::Subtract($([System.Math]::Floor($([MSBuild]::Divide($([System.DateTimeOffset]::UtcNow.ToUnixTimeSeconds()), 86400)))),19723))</CustomBuildNumber>
<!--Second In Current Day / 2-->
<CustomRevisionNumber>$([MSBuild]::Divide($([MSBuild]::Modulo($([System.DateTimeOffset]::UtcNow.ToUnixTimeSeconds()), 86400)), 2))</CustomRevisionNumber>
</PropertyGroup>
</Project>
并在我的 csproj 中使用了这些设置:
<Version>8.0.$(CustomBuildNumber).$(CustomRevisionNumber)</Version>
这在 netstandard2.0 包项目中:
<PackageVersion>1.0.$(CustomBuildNumber).$(CustomRevisionNumber)</PackageVersion>