Я пытаюсь установить версию продукта следующим образом:
использовать счетчик дней (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"
Посмотрите, поможет ли это: stackoverflow.com/a/59820867/558486
Спасибо, что связались с нашим Уэйдом, вот фрагмент: - задача: VSBuild@1 displayName: «Build Project Solution» входные данные: решение: «$(buildSolution)» msbuildArgs: «$(MSBuildArguments)» платформа: конфигурация «$(buildPlatform)» : '$(buildConfiguration)' createLogFile: true logFileVerbosity: 'подробно'
@user26307134 user26307134 добавьте, как вы определяете переменную $(ProductVersion) в своем yaml.
- name: значение majorVersion: 1 - name: значение majorVersion: 0 - name: значение buildDate: $[format('{0:yyyyMMdd}', Pipeline.startTime)] - name: значение buildCounter: $[counter('BuildCounter' , 1)] $ProductVersion = "$majorVersion.$minorVersion.$buildDate.$buildCounter"
@beena, трудно читать эти фрагменты кода в комментариях. Пожалуйста, отредактируйте свой вопрос и вставьте его туда.
@RuiJarimba сейчас отредактировано. Пожалуйста, проверьте
использовать счетчик дней (1,2,3), но после выполнения конвейера он переопределяется .csproj в сценарии YML Azure DevOps
Для проекта, предназначенного для .NET Core или .NET Standard, если у вас есть версия продукта, определенная в csproj, она будет take precedence over
передана в качестве аргументов MSBuild.
образец ниже:
После того, как я удалю его из csproj, аргументы MSBuild начнут работать. Поэтому попробуйте переместить свойства из csproj.
Рад видеть вас в Stack Overflow! Команда «Создать», которой вы поделились, на самом деле не является задачей или командой, а выглядит как определение переменной. Не могли бы вы поделиться дополнительным фрагментом кода, чтобы было более понятно?