Невозможно установить настроенную версию продукта в конвейере Azure DevOps

Я пытаюсь установить версию продукта следующим образом:

  • Основная версия-1
  • Минорная версия-0
  • Версия – дата сборки ГГГГММДД,

использовать счетчик дней (1,2,3), но после выполнения конвейера он переопределяется .csproj в сценарии YML Azure DevOps — пример:

1.0.20240708.1

Это команда Build, которую я использую для выполнения вышеизложенного.

- name: MSBuildArguments
  value: '/p:OutputPath = "$(PackagePath)" /p:ProductVersion = "$(ProductVersion)"   /p:FileVersion = "$(fileVersion)" /p:Copyright = "$(CopyrightText)" /p:ProductName = "$(productname)"'

значения выдавались правильно, когда это было Write-Output, но после выполнения конвейера генерируются некоторые случайные значения.

Но в TFS есть встроенное свойство, позволяющее работать без каких-либо дополнительных команд. Пытаюсь найти подобное на лазури.

- name: majorVersion
  value: 1
- name: minorVersion
  value: 0
- name: buildDate
  value: $[format('{0:yyyyMMdd}', pipeline.startTime)]
- name: buildCounter
  value: $[counter('BuildCounter', 1)]
$ProductVersion = "$majorVersion.$minorVersion.$buildDate.$buildCounter"

Рад видеть вас в Stack Overflow! Команда «Создать», которой вы поделились, на самом деле не является задачей или командой, а выглядит как определение переменной. Не могли бы вы поделиться дополнительным фрагментом кода, чтобы было более понятно?

wade zhou - MSFT 16.07.2024 10:33

Посмотрите, поможет ли это: stackoverflow.com/a/59820867/558486

Rui Jarimba 16.07.2024 11:16

Спасибо, что связались с нашим Уэйдом, вот фрагмент: - задача: VSBuild@1 displayName: «Build Project Solution» входные данные: решение: «$(buildSolution)» msbuildArgs: «$(MSBuildArguments)» платформа: конфигурация «$(buildPlatform)» : '$(buildConfiguration)' createLogFile: true logFileVerbosity: 'подробно'

beena 16.07.2024 11:51

@user26307134 user26307134 добавьте, как вы определяете переменную $(ProductVersion) в своем yaml.

Shamrai Aleksander 16.07.2024 12:00

- name: значение majorVersion: 1 - name: значение majorVersion: 0 - name: значение buildDate: $[format('{0:yyyyMMdd}', Pipeline.startTime)] - name: значение buildCounter: $[counter('BuildCounter' , 1)] $ProductVersion = "$majorVersion.$minorVersion.$buildDate.$buildCounter"

beena 16.07.2024 12:06

@beena, трудно читать эти фрагменты кода в комментариях. Пожалуйста, отредактируйте свой вопрос и вставьте его туда.

Rui Jarimba 16.07.2024 12:43

@RuiJarimba сейчас отредактировано. Пожалуйста, проверьте

beena 16.07.2024 12:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

использовать счетчик дней (1,2,3), но после выполнения конвейера он переопределяется .csproj в сценарии YML Azure DevOps

Для проекта, предназначенного для .NET Core или .NET Standard, если у вас есть версия продукта, определенная в csproj, она будет take precedence over передана в качестве аргументов MSBuild.

образец ниже:

После того, как я удалю его из csproj, аргументы MSBuild начнут работать. Поэтому попробуйте переместить свойства из csproj.

Другие вопросы по теме

Azure Pipelines: push был отклонен, поскольку одна или несколько фиксаций содержат адрес электронной почты автора, который не соответствует шаблонам, указанным в политике
Как выполнить git diff в конвейере Azure DevOps CI с несколькими репозиториями
Размещенные агенты Azure Pipelines были обновлены и теперь содержат пакет SDK/среды выполнения .Net 5.x вместе со старой версией .Net Core
Azure Devops // Подключение к службе // Terraform // Конвейер Yaml -> Ошибка сборки
Срок службы .NET Core SDK/среды выполнения 2.2 и 3.0 истек (EOL) и удален из всех размещенных агентов
Почему мои условия не работают должным образом в конвейерах YAML Azure DevOps при использовании условий на основе динамической переменной?
Выходная переменная из обычного задания конвейера Azure не расширяется в задании развертывания
Мой конвейер Azure не запускается, несмотря на выполнение условий
Используйте выходные данные команды bash в качестве входных параметров шаблона задания в конвейере Azure DevOps
Start-process: входной объект не может быть привязан ни к каким параметрам команды