Обновление AssemblyInfo в транке мы только после RTM / RTW / GA / (независимо от версии :) выпуска.
Наши сборки Nightly / Beta / RC / QA / (что угодно :) просто берут копию обновленного AssemblyInfo.cs (из рабочей копии на сервере CI) в соответствующую ветку или тег. Мы используем Subversion, и вы можете разветвлять / маркировать рабочую копию с незафиксированными изменениями.
Это позволяет нам сохранить как правильную версию AssemblyInfo для сборки Nightly / Beta в ветви, так и в теге, и трогать AssemblyInfo в транке только после окончательного выпуска. На сервере сборки есть переключатель, который сообщает ему, что он должен фиксировать транк в этом типе сборки.
FWIW, мы используем все это из сценариев MSBuild, используя различные значения для свойств, заданных для каждого типа проекта, передаваемых с нашего сервера сборки (CruiseControl.NET).
[EDIT] Также обратите внимание, что версия AssemblyInfo для разработчика не обновляется (если они не изменяют ее вручную), поэтому они не получают шума от модифицированного AssemblyInfo при каждой сборке. Мы позволяем разработчикам контролировать Major.Minor , сервер сборки контролирует Build , и мы оставляем Revision для QA, чтобы связываться с их собственной системой (потому что это все равно игнорируется WiX / MSI). 1015 *