Сборка ядра yaml dotnet Azure Devops /p:Version=1.2.3 всегда по умолчанию соответствует версии в csproj - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь создать основное приложение dotnet через Azure Devops. Я хочу, чтобы мои сборки версировались с номером сборки.

В файле .csproj:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  <Version>0.0.1</Version>
</PropertyGroup>

конвейер сборки yaml содержит:

trigger:
  branches:
   include:
     - master

pool:
  name: 'Hosted Windows 2019 with VS2019'
  #vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'
  Version.Revision: $[counter(format('{0:yyyyMMdd}', pipeline.startTime), 0)]
  VersionMajor: 0
  VersionMinor: 1


name: '$(VersionMajor).$(VersionMinor).$(Date:yy)$(DayOfYear).$(Version.Revision)'

steps:
- task: DotNetCoreInstaller@0
  inputs:
    version: '2.2.300'

- script: dotnet build --configuration Release /p:Version=$(Build.BuildNumber)
  displayName: 'dotnet build $(buildConfiguration) $(Build.BuildNumber)'

В журнале сборки Azure Devops команда подбирает правильную версию:

dotnet build --configuration Release /p:Version=0.1.19185.10

Но когда я загружаю артефакты и проверяю dll, они все еще содержат номер версии 0.0.1

Выполнение этой команды локально добавляет номер версии в dll. Итак, почему версия не добавлена ​​через devops?

1 Ответ

1 голос
/ 04 июля 2019

Если вы не укажете иное, dotnet publish вызовет перекомпиляцию перед публикацией файлов и, таким образом, перезапишет все, что вы ранее пытались выполнить с dotnet build. Вы используете флаг --no-build для подавления компиляции. Обратите внимание, что --no-build также установит --no-restore, поэтому вам нужно явно вызвать dotnet restore. Типичный набор команд (с типичными переменными, которые вы можете увидеть в DevOps Azure) может быть:

dotnet restore
dotnet build --configuration $(BuildConfiguration) --no-restore /p:Version=$(Build.BuildNumber)
dotnet publish --configuration $(BuildConfiguration) --no-build --output $(Build.ArtifactStagingdirectory)

См. это сообщение в блоге для более подробной информации.

...