Azure DevOps .NET Core 构建和发布不保留给定的应用程序版本

Azure DevOps .NET Core build and publish doesn't keep given application version

我有一个 ASP.NET 核心应用程序,我正在通过 Azure DevOps build/release 管道在专用服务器上发布。

我在 YAML 构建中使用 GitVersion 任务 (gittools.gitversion.gitversion-task.GitVersion@4) 管理应用程序版本号。

构建步骤类似于:

- task: DotNetCoreCLI@2
  displayName: 'dotnet build'
  inputs:
    command: custom
    custom: build
    workingDirectory: src/MyAppProjectFolder
    arguments: '-p:Version=$(GitVersion.FullSemVer)'

并使用给定的 FullSemVer 正确生成 .exe(我正在检查 Azure 代理工作文件夹)

然后是发布步骤:

- task: DotNetCoreCLI@2
  displayName: 'dotnet publish'
  inputs:
    command: publish
    publishWebProjects: false
    arguments: '--output $(build.artifactstagingdirectory) --no-restore --no-build'
    workingDirectory: src/MyAppProjectFolder

出于某种原因,我在发布者创建的 C:\agent_work\a\a.zip 中找到的相同 .exe 没有正确的版本号,但是通用的 1.0.0.

如果我在同一台服务器上手动 "emulate" 管道(通过 powershell 手动 dotnet builddotnet publish,参数相同)一切都按预期工作。

这是怎么回事?有没有办法确保应用程序保持 $(GitVersion.FullSemVer) 版本?

注意:我不得不添加

- task: UseDotNet@2
  displayName: 'Use .Net Core sdk 2.1.x'
  inputs:
    packageType: sdk
    version: 2.1.x
    installationPath: $(Agent.ToolsDirectory)/dotnet
    includePreviewVersions: true

在每个 NET Core 任务之前,如 here 所述,在代理更新到 .NET Core 3.0 之后(在这些构建运行良好之前)。

尝试将 -p:Version=$(GitVersion.FullSemVer) 添加到发布步骤的参数中。