Как использовать функцию сборки TeamCity AssemblyInfo Patcher, но исключить возможность внесения исправлений в SVN Externals? - PullRequest
4 голосов
/ 07 марта 2012

У меня есть настройка проекта в Subversion, в которой определены несколько внешних объектов Subversion.Эти Subversion Externals ссылаются на другие проекты.

Пример макета Subversion:

  1. репо / Project1 / trunk
  2. репо / Project2 / trunk

Пример оформления заказа:

  1. $ WorkingDir \ Project1 \ trunk
  2. $ WorkingDir \ Project1 \ trunk \ Lib \ Project2

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

В данный момент, поскольку моя конфигурация сборки проверяет Project1 с полной поддержкой внешних Subversion, а затем применяет AssemblyInfo Patcherвсе мои сборки Project1 и мои сборки Project2 имеют одну и ту же версию сборки - даже если я хочу, чтобы они были разными.

Есть ли способ сделать так, чтобы сборки Project1 отличались от версий Project2?

Ответы [ 3 ]

5 голосов
/ 08 марта 2012

В настоящее время нет способа предоставить каталоги для исключения.

Согласно документации TeamCity , AssemblyInfo Patcher обновляет только значения AssemblyVersion и AssemblyFileVersion во всех найденных исходных файлах AssemblyInfo (например, AssemblyInfo.cs, AssemblyInfo.vb), прежде чем что-либо будет построено он не изменяет версию существующих скомпилированных двоичных файлов.

Внешние компоненты, о которых вы упоминаете, это просто двоичные файлы, или вы включаете в себя все Project2 (например, двоичные файлы, файлы проекта, исходный код и т. Д.)? Вы должны просто включить двоичные файлы.

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

2 голосов
/ 11 октября 2016

Начиная с TeamCity 9.1, появилась новая функция File Content Replacer . Это позволяет указать шаблон для сопоставления файлов, для которых вы хотите выполнить замену текста.

JetBrains рекомендует использовать это вместо AssemblyInfo Patcher «Для замены более широкого диапазона значений в большем количестве файлов»

0 голосов
/ 03 мая 2017

Я нашел очень простое решение - просто переименовать файл AssemblyInfo.cs во что-то вроде

AssemblyInfoDontChange.cs

...