Установка переменной C# на этапе сборки TFS

Я новичок в C# и TFS, я установил базовое приложение WPF, которое использует непрерывную интеграцию. Проблема в том, что некоторые пользователи не обновляются, когда должны, и у нас нет, так сказать, контроля версий. Я хочу иметь такую ​​переменную в коде.

public static string BuildNumber = "";

И заполните его в процессе онлайн-сборки. Таким образом, мы можем показать это в строке заголовка, и когда они позвонят, мы сразу узнаем, с чем имеем дело. Я предполагаю, что это можно сделать в разделе «переменные процесса». Но здесь действительно нужна пошаговая помощь. Просто хочу, чтобы он имел тот же формат, что и сборка: «$ (date: yyyyMMdd) $ (rev: .r) _ $ (SourceBranchName)» Мы действительно новички в этом и знаем, что мы должны использовать правильные версии сборки, такие как что-то типа 1.0.0.1. Но мы действительно ищем быстрое решение. Так что, если настроить правильное управление версиями действительно просто. Пожалуйста, не пытайтесь направить меня по этому пути, я уже нахожусь на крутом этапе обучения.

Спасибо.

Вы ищете Переменные сборки?

Camilo Terevinto 01.05.2018 04:37

Я думаю, вы ищете что-то в этом роде? Статья немного устарела, но это должно помочь вам сузить ключевые слова для поиска в Google richard-banks.org/2007/07/…

Svek 01.05.2018 05:38

Мы используем AssemblyInfo.cs для ввода этих значений перед компиляцией. Для этого должно быть несколько способов (простая замена, в магазине есть этапы сборки). Могу уточнить - если потребуется

Dennis Kuypers 01.05.2018 06:18

Может быть, даже лучше добавить sha (если вы используете git), чтобы вы могли ссылаться на фактический коммит, который его произвел. Иногда пригодится

Dennis Kuypers 01.05.2018 06:20

Есть задача сборки, которую мы используем для обновления AssemblyInfo, которая также может добавлять любые настраиваемые атрибуты (которые будут записаны как [assembly: YourAttribute(...)]). Он может использовать переменные сборки, включая ваш номер сборки. Вам нужно будет определить тип атрибута для хранения номера сборки, а затем использовать отражение для запроса этого значения в вашем приложении. github.com/BoolBySigma/UpdateAssemblyInfo

pinkfloydx33 01.05.2018 10:44

Какую версию TFS вы используете?

PatrickLu-MSFT 02.05.2018 09:39

@xrstokes, есть новости по этой проблеме, вы догадались?

PatrickLu-MSFT 18.05.2018 03:53

Джулио Виан дал правильный ответ.

xrstokes 19.05.2018 06:47

@xrstokes Рад слышать, что проблема решена, благодарю за пометить его ответ как ответ, который также поможет другим в сообществе.

PatrickLu-MSFT 24.05.2018 03:52
Стоит ли изучать 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
9
248
2

Ответы 2

Насколько я понимаю, похоже, вы хотите перезаписать свой номер сборки с помощью переменных, вы можете сделать это через сценарий PowerShell, используя переменные сборки:

1) Сначала создайте сценарий Powershell, подобный этому

$FinalVersion=Some-Function-To-Calculate-Version
$BuildDefName = $Env:BUILD_DEFINITIONNAME
Write-Host "##vso[build.updatebuildnumber]$($BuildDefName)-$($FinalVersion)"

2) In your vNext build definition, for "Build number format" set it to anything. It doesn't matter because the Build Number will be overwritten.

3) In the same vNext build definition steps, add the first step as a Powershell step, and set your script from step 1 to be executed. You can later customize if you want to pass variables in order to calculate your build number.

4) Queue your build and see the results.

Другой способ, пожалуйста, взгляните на этот аналогичный вопрос: Доступ к номеру версии сборки в сценарии Powershell во время сборки TFS

Предостережение: я предполагаю, что вы используете TFS 2015 или более позднюю версию а также Build vNext (т.е. не используете сборку Xaml).

Ваш вопрос легко решается с использованием Задача Powershell в качестве первого шага вашей сборки. В этот момент номер сборки известен и доступен в переменной ${env:BUILD_BUILDNUMBER}.

Скажем, файл, содержащий строку public static string BuildNumber = "";, находится в корне исходного каталога и называется BuildNumber.cs. Тогда код Powershell похож на следующий:

$pathToBuildNumber = "${env:BUILD_SOURCESDIRECTORY}\BuildNumber.cs"
$source = Get-Content $pathToBuildNumber
$source -replace 'public static string BuildNumber = "(.*)";',$env:BUILD_BUILDNUMBER | Out-File $pathToBuildNumber

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