Я новичок в C# и TFS, я установил базовое приложение WPF, которое использует непрерывную интеграцию. Проблема в том, что некоторые пользователи не обновляются, когда должны, и у нас нет, так сказать, контроля версий. Я хочу иметь такую переменную в коде.
public static string BuildNumber = "";
И заполните его в процессе онлайн-сборки. Таким образом, мы можем показать это в строке заголовка, и когда они позвонят, мы сразу узнаем, с чем имеем дело. Я предполагаю, что это можно сделать в разделе «переменные процесса». Но здесь действительно нужна пошаговая помощь. Просто хочу, чтобы он имел тот же формат, что и сборка: «$ (date: yyyyMMdd) $ (rev: .r) _ $ (SourceBranchName)» Мы действительно новички в этом и знаем, что мы должны использовать правильные версии сборки, такие как что-то типа 1.0.0.1. Но мы действительно ищем быстрое решение. Так что, если настроить правильное управление версиями действительно просто. Пожалуйста, не пытайтесь направить меня по этому пути, я уже нахожусь на крутом этапе обучения.
Спасибо.
Я думаю, вы ищете что-то в этом роде? Статья немного устарела, но это должно помочь вам сузить ключевые слова для поиска в Google richard-banks.org/2007/07/…
Мы используем AssemblyInfo.cs для ввода этих значений перед компиляцией. Для этого должно быть несколько способов (простая замена, в магазине есть этапы сборки). Могу уточнить - если потребуется
Может быть, даже лучше добавить sha (если вы используете git), чтобы вы могли ссылаться на фактический коммит, который его произвел. Иногда пригодится
Есть задача сборки, которую мы используем для обновления AssemblyInfo, которая также может добавлять любые настраиваемые атрибуты (которые будут записаны как [assembly: YourAttribute(...)]
). Он может использовать переменные сборки, включая ваш номер сборки. Вам нужно будет определить тип атрибута для хранения номера сборки, а затем использовать отражение для запроса этого значения в вашем приложении. github.com/BoolBySigma/UpdateAssemblyInfo
Какую версию TFS вы используете?
@xrstokes, есть новости по этой проблеме, вы догадались?
Джулио Виан дал правильный ответ.
@xrstokes Рад слышать, что проблема решена, благодарю за пометить его ответ как ответ, который также поможет другим в сообществе.
Насколько я понимаю, похоже, вы хотите перезаписать свой номер сборки с помощью переменных, вы можете сделать это через сценарий 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
Вы ищете Переменные сборки?