Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Подскажите хоть какое нибудь работающее решение для инкремента билда в VS 2008 для С++
Утилиты, которые я пробовал, как-то не очень удобны.
Либо они работают только с ресурсными файлами, либо не понимают нужную кодировку,
либо не умеют находить нужную строку с номером версии, либо не гибкие в плане
соглашений о нумерации версий, принятых в организации.
Можете поискать на том же codeproject, но я более чем уверен, что попробовав
поработать с ними, Вы от них очень быстро откажетесь.
Да и потом, правка номеров версий в процессе работы с Visual Studio иногда
даже мешает, вызывая лишние перекомпиляции при сборке и помещая ненужные
записи об изменениях в систему контроля версий.
Я применяю следующий подход — все билды, уходящие в паблик, собираются при
помощи CruiseControl.NET (MsBuild). Перед сборкой все текстовые файлы,
хранящие строку с номером версии, обрабатываются простой самописной утилитой,
которая заменяет эту строку на нужное значение. Само значение полностью
контролируется CruiseControl.NET (CCNetLabel); два младших числа номера версии
отображают порядковый номер билда и номер ревизии svn — заботу о них
полностью берет на себя инфраструктура сборки.
Получается дешево и сердито, но лично меня полностью устраивает, и с номерами
версий никогда не бывает никаких путаниц.
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Привет,
KA>Подскажите хоть какое нибудь работающее решение для инкремента билда в VS 2008 для С++
У нас используется Visual Build. Раньше была самописная программа.
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Подскажите хоть какое нибудь работающее решение для инкремента билда в VS 2008 для С++
А зачем вам так студия для этого нужна? Почему бы инкремент не делать вообще отдельным скриптиком типа publish или при сборке инсталлера? Благо ревизию можно взять с сорс контроля или задать и хранить там же отдельно от проекта.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>А зачем вам так студия для этого нужна? Почему бы инкремент не делать вообще отдельным скриптиком типа publish или при сборке инсталлера? Благо ревизию можно взять с сорс контроля или задать и хранить там же отдельно от проекта. :xz:
Здравствуйте, Сергей, Вы писали:
V>>А зачем вам так студия для этого нужна? Почему бы инкремент не делать вообще отдельным скриптиком типа publish или при сборке инсталлера? Благо ревизию можно взять с сорс контроля или задать и хранить там же отдельно от проекта. С>пример скрипта можно?
конкретный скрипт писать лень, но что-то такое можно сделать:
1. сохранить ручками в файлик version.txt значение 1.0.0.0
2. положить файлик в svn рядом с проектом
3. сделать скрипт publish.bat который:
a. берёт файлик version.txt из svn
b. разбирает через for /F версию на значения
c. инкрементирует последнее значение или берёт в качестве значения ревизию проекта с svn
d. кладёт новую версию обратно в файл
e. файлик коммитится вместе с проектом или не коммитится вовсе
или
1. сохранить ручками в файлик version.txt значение 1.0.0.0
2. положить файлик в svn рядом с проектом
3. сделать скрипт increment_build.bat рядом с проектом, который:
a. запускается а постбилде
b. берёт файлик version.txt лежащий рядом с проектом
c. разбирает через for /F версию на значения
d. инкрементирует последнее значение или берёт в качестве значения ревизию проекта с svn
e. кладёт новую версию обратно в файл
f. файлик коммитится вместе с проектом или не коммитится вовсе
ну и т.д.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, ArtDenis, Вы писали:
AD>Небольшой оффтопик. А разве сейчас, во времена засилья систем контроля версий, актуальны номера билдов?
контроль версий не решает задачу нумерации билдов
у нас в проектах нумерацией занимается CI, который вставляет номер билда билд-плана в файлы AssemblyInfo.cpp, AssemblyInfo.cs, *.rc с помощью своих же скриптов на баше (cygwin) перед сборкой бинарей
версия из VCS вставляется в отдельное текстовое поле ресурсов
кстати, в тимсити есть даже соответствующий скрипт из коробки для .cs проектов