Сборка TFS: включить имя ветки в поле "номер сборки" сборок - PullRequest
8 голосов
/ 20 января 2011

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

Каков наилучший способ настройки TFS Build для включения имени текущей ветви в поле номера сборки (или более подходящее поле) сборок, которые он создает?

Ответы [ 2 ]

4 голосов
/ 27 января 2011

Посмотрите на Задачу Версии в http://msbuildtasks.tigris.org/

Это позволит вам обновить assemblyinfo.cs при сборке.

Это все еще оставляет «как» идентифицировать ветку ...

На риск религиозных дебатов по нумерации версий вы можете посвятить одну часть major.minor.build.revision ветви. Например, major.minor просто следует вашему «внешнему / коммерческому» номеру версии, сборка - это номер сборки TFS, а ревизия 1 указывает вашу основную ветвь, ревизия 2 - определенную ветвь. Вы также можете использовать один из других атрибутов версии сборки, например AssemblyInformationalAttribute, для хранения в нем идентификатора ветви.

Я не совсем в курсе того, как вы можете обнаружить ветку, в которой вы находитесь, но в худшем случае это просто вопрос получения текущего каталога и применения некоторой логики для определения имени ветви. Вывод ветки tf. Команда также должна дать вам имя ветки для текущего рабочего пространства, но вам понадобится пользовательское задание для извлечения только первой строки.

Не самонастраивающийся ответ, но он может привести вас в правильном направлении.

0 голосов
/ 28 января 2011

Версия проста с точки зрения ее получения и обновления различных файлов AssemblyInfo.cs.

Я бы организовал вашу структуру TFS аналогично соглашениям Subversion, так что имейте ствол, папку с тегами и ветвями.

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

Имейте пользовательскую задачу MSBuild, которая решает эту проблему за вас (путем перемещения вверх по иерархии папок TFS), и вставьте ее в свое свойство, которое используется для обновления AssemblyInformationalAttribute. Вы можете использовать задачу FileUpdate из http://msbuildtasks.tigris.org/ для замены Regex в файлах AssemblyInfo.cs.

...