Я пытаюсь использовать сборки информации патчер создать номер версии что-то вроде:Teamcity 9: Как добавить GIT короткий хэша в сборочную информации патчер
1.2.3.1a3c19e
где последний бит git короткий хеш.
Я попытался использовать шаг сборки сценария powershell для создания короткого хеша (поскольку я не могу найти переменную, имеющую его), и добавив это к системной переменной, но этот шаг сборки появляется после сборки патчера ассемблера, поэтому это не очень полезно.
Просто хочу добавить, что разделенная конфигурация сборки необходима, поскольку сборщик информации о сбое запущен после того, как были собраны изменения из VCS и до того, как шаги начнут выполняться. Существует способ, которым вы можете избавиться от раздельной конфигурации сборки для приведенного выше примера, используя скрипт powershell, который проходит через все файлы AssemblyInfo.cs и выполняет замену вместо патчера информации о сборке: '(Get-childitem -include AssemblyInfo.cs -recurse) | Foreach-Object {Set-Content -Encoding UTF8 $ _ ((Get-content $ _) -replace "1.0.0.0", "1.0.0-% GitShortHash%")} '. –
@Alexey. Я согласен, что вы можете написать сценарий, чтобы сделать это в PowerShell, но я был бы очень осторожен в том, чтобы отбросить этот код, поскольку он, скорее всего, сломает сборку. По умолчанию AssemblyInfo.cs содержит AssemblyVersion и AssemblyFileVersion, которые не скомпилируются, если вы использовали короткий хеш. AssemblyInfo.cs понадобится некоторая «предварительная подготовка» для этого скрипта, чтобы не сломать сборку. –
@DevOps, вы правы на 100%. Я оставил свой комментарий и пример сценария, чтобы отметить, что это можно сделать без добавления другой конфигурации сборки, что может быть проблематичным для smbd из-за ограничений лицензии. Сценарий powershell, который я опубликовал, должен быть обновлен, чтобы заменить версию только для обязательного атрибута. –