2009-09-10 3 views
7

Я с нетерпением жду реализации ежедневной сборки для предстоящего проекта.Каков правильный способ обработки версии сборки?

Но прежде чем это сделать, мне нужно знать, как правильно выполнить сборку.

У меня есть следующие проблемы:

  • Если каждый узел имеет независимый номер версии или же все они имеют ту же версию?
  • Должен ли я использовать * версию для сборки и пересмотра?
  • Подходит ли пересмотр для ежедневной сборки?

ответ

8

Мы штамповать все узлы в пределах наших продуктов с тем же номером версии, выполнив следующие действия:

  • Link все узлы к AssemblyInfoCommon.cs, содержащих информацию о версии номер: см here в течение пример.

  • Сформировать файл AssemblyInfoCommon.cs как часть сборки с использованием (в нашем случае) NANT asminfo задачи, круиз-контроль .NET и пересмотр SVN этикетировочные

В нашем случае, мы не Не используйте * версию. Все развернутые версии построены на сервере сборки. Мы не беспокоимся о номере версии на наших настольных компьютерах.

+0

+1 для номеров сборки сервером сборки. Сборка должна быть повторяемой, что означает, что они должны быть написаны сценарием, а их выполнение на рабочем столе слишком лениво и «просто знает», как это сделать, а не пытаться создать скрипт сборки. – gregmac

0

Так Каждый узел должен иметь ту же версию, которая обычно представляет собой сочетание версии т.е. 3.4 + номер сборки, которая представляет собой последовательность, которая представляет собой число раз, что выпуск был собран на сервере сборки. Пересмотр является актуальным, поскольку он демонстрирует количество сборок, которые вы создали для этой версии. Вы можете сделать это одним из двух способов. Первый способ был бы в том, что если вы планировали выпуск, то есть 3.4, тогда, когда вы начнете работать над этой версией, это ваш основной номер версии, а ваш младший номер версии увеличивается с помощью сборки. Другой способ сделать это - жестко контролировать версии сборки в том случае, когда вы готовы выполнить выпуск к QA/Regression, вы установите свою основную версию на 3.4, и вы оставите номер вашей младшей версии равным 0. Вы держите все под контролем таким образом пока вы не отпустите. Таким образом, вы можете контролировать нумерацию своего пакета обновления с помощью младшего номера версии. Надеюсь это поможет.

2

Ответ действительно зависит от того, что вы пытаетесь выполнить с помощью номеров версий сборки. Если вы выполняете развертывание ClickOnce и хотите выполнять независимую загрузку обновленных сборок, вам нужно иметь независимую версию каждой сборки. В противном случае я считаю, что часто бывает, что версии сборки соответствуют номеру выпуска программного обеспечения. В более сложных сценариях вам может понадобиться другая стратегия.

Схема, которую я использовал в предыдущей компании, была major.minor.revision.build - поэтому в версии 1.0 продукта версия сборки и версия сборного файла на каждой сборке были 1.0.0.1129 (например). Это упростило сопоставление того, какие сборки были частью выпуска программного обеспечения, вплоть до номера сборки. Мы выполнили это с использованием предварительного компиляционного поиска и заменили в каждом файле AssemblyInfo.cs, чтобы заменить токен номерами версий, предоставленными нашим автоматизированным процессом сборки.

0

Я обычно соглашаюсь с тем, что все сборки должны иметь одинаковый номер версии; однако я бы сделал одно предостережение. Если одна из сборок используется где-то в другом месте за пределами этого проекта или если она считается ее собственным проектом, она должна иметь собственный номер версии. Вероятно, он также должен быть удален из этого решения и в него. Единственная причина, по которой я упоминаю об этом, это то, что я видел многочисленные случаи, когда люди имеют сборку, которая используется в нескольких других местах, но главным образом в одном месте, и они стараются сохранить версию. Это плохая идея. Я думаю, что принцип единой ответственности также применяется на уровне решения/проекта.

Что касается нумерации, я согласен с Гаем Старбаком (майор.minor.revision.build). Так я всегда это делал, и он всегда работал хорошо.

0

У нас есть большое приложение (сотни сборок) с частыми выпусками (около 1 месяца). Мы пошли на то, чтобы «дать каждой сборке одну и ту же версию», но ее постоянный источник фрустрации мне, что сборки для одной версии полностью несовместимы с другими, несмотря на то, что интерфейсы этих assmblies редко (если вообще когда-либо) меняются.

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

Смежные вопросы