Приведение версии TeamCity в соответствие версии сборки .NET - PullRequest
15 голосов
/ 31 августа 2011

Прямо сейчас наши сборки имеют номер версии, например 2.0.831.0.Насколько я понимаю, это основная версия, дополнительная версия, дата и номер сборки.Если я внесу изменение и соберу снова в тот же день, то это 2.0.831.1, 2.0.831.2 и т. Д.

Мой формат числа сборки TeamCity просто 2. {0}, где {0} - это автоматически увеличиваемое число, котороепросто продолжается вечно (2.195, 2.196 и т. д.).

Как мне сделать TeamCity похожим на сборочную версию?Мы хотим иметь возможность связать журнал изменений с версией сборки, чтобы каждый мог сказать, что версия сборки 2.0.831.2 содержала эти изменения в этих файлах.

Дополнительная информация: На нашем этапе сборки используется «Visual Studio (sln)».параметр вместо «MSBuild», если это имеет значение.Мы используем Subversion для контроля версий, если это имеет значение.Наша версия TeamCity - 6.5.1 (сборка 17834).

Ответы [ 2 ]

21 голосов
/ 31 августа 2011

Я бы порекомендовал вам принять семантическую схему управления версиями {major}.{minor}.{patch} и добавить 4-й элемент для номера сборки {major}.{minor}.{patch}.{build}.Это гораздо полезнее, так как включает дату сборки в схему управления версиями.

TeamCity 6.5 (вы не указали версию) имеет функцию сборки, которую можно использовать для исправления версии в AssemblyInfo.cs.во время сборки.См. Документацию для AssemblyInfo Patcher .

AssemblyInfo patcher dialog (TeamCity documentation)

Затем вы можете определить формат номера сборки так, как вы хотели бы иметь в вашей сборке и использоватьформат для самой сборки, а также для функции исправления.

6 голосов
/ 31 августа 2011

Одним из решений является использование бегуна MSBuild и написание сценария MSBuild, который считывает информацию о версии из файла AssemblyInfo, устанавливает версию сборки TeamCity на это значение во время выполнения сборки, а затем увеличивает часть номера сборки этой версии,и записывает значение обратно в AssemblyInfo.

Это не особенно тривиально, так как вам нужно иметь представление о написании пользовательских сценариев MSBuild, и вам, вероятно, придется использовать некоторые задачи сообщества и т. Д. Для чтения / записи информации о версии.

Мы также используем концепцию глобального файла AssemblyInfo, на которую ссылаются все наши сборки (используя Add Link в VS), и, таким образом, нам нужно обновить только один файл во время сборки.

Существуетотличная статья здесь , в которой описывается выполнение общих задач CI с MSBuild.Он использует CruiseControl.NET, но большая часть этого все еще применяется.Однако, если вы используете TeamCity 6.5, я хотел бы изучить использование исключительно его функций сборки, так как это будет намного проще поддерживать, чем пользовательский скрипт MSBuild.

...