Pull to refresh

Comments 5

Это что, руками надо вписывать номер каждой ревизии SVN, да еще и коммитить по-отдельности?
Долбануться можно — компьютер вам на что дан? Откройте для себя SubWCRev.exe
Я упомянул в посте у том, что я использую автоматическую сборку при помощи MSBuild проекта (небольшой XML файл) и версии в AssemblyInfo заменяются при помощи регулярных выражений. А о существовании SubWCRev действительно ничего не знал, спасибо Вам, ознакомлюсь, возможно я действительно изобретаю колесо.
Не устаю делиться ссылкой: Continuous Integration: From Theory to Practice. Прочитав руководство, можно создать полностью автоматический билд-сервер со сбором метрик, тестированием и развёртыванием проекта!

Указанная задача там решается целиком автоматически. Вкратце — порядковый номер билда лежит в текстовом файле, находящемся в репозитории. Билд-скрипт считывает его из файла, номер ревизии репозитория берётся с помощью команды SvnInfo (MSBuild.Community.Tasks), далее скрипт компонует файл GlobalAssemblyInfo.cs с новым номером версии продукта и прочей информацией, который используется во всём решении.
Спасибо за ссылку. Я что то подобное раньше делал, но потом решил отказаться от CruiseControl.NET, меня не устраивало отсутствие некоторых возможностей CruiseControl.NET, кастомизировать я не смог.

В моем решении я использую практически такой же подход, который Вы описали. Три цифры версии хранятся в XML файле, MSBuild скрипт считывает этот файл, считывает номер ревизии каждого каталога проекта с помощью SvnInfo и проставляет последнюю цифру версии в AssemblyInfo, заменяя при помощи RegExp. Отличие лишь в том, что версия проставляется для каждого проекта в solution и она может быть разной, т.к. ревизии веток каталогов могут отличаться.

Применять GlobalAssemblyInfo.cs мне кажется не совсем корректным, т.к. это, имхо, нарушает суть версионинга, т.к в этом случае в дистрибутиве мы получаем набор assembly с одинаковыми версиями. Хотя это и не очень критично.
>2. Меняем версии в AssemblyInfo.cs во всех проектах на текущую версию + номер ревизии соответствующей ветки проекта.

Этот пункт можно тоже облегчить. Для этого редактируйте только один из AssemblyInfo.cs в одном из проектов, все остальные замените ссылками на этот файл (Add Existing File/Add As Link). Так удобно проставлять единые для всех сборок проекта атрибуты типа AssemblyCompany, AssemblyProduct, AssemblyCopyright и т.п.

Ну или можно перенести нужные атрибуты из AssemblyInfo.cs в свой класс, а на него как на Link уже ссылаться, правда с одним ньюансом, в случае использования файла, отличного от AssemblyInfo.cs — перестанет работать редактирование этих свойств через визуальный редактор студии.
Sign up to leave a comment.

Articles