Подтвердить что ты не робот

Должен ли AssemblyInfo.cs быть включен в управление версиями?

У меня есть автоматическая система сборки, использующая CruiseControl. Я использую SvnRevisionLabeller для получения строки версии. С помощью этой строки я могу использовать nant для обновления AssemblyInfo.cs, поэтому, когда я ее создаю, у нее есть правильная строковая строка. Я также могу использовать эту метку CC, чтобы пометить репозиторий subversion.

Итак, все выровнено
 - CCNet Build label
 - Исполняемый файл (информация о сборке)
 - Контроль версий (тэг subverson)

Теперь, когда у меня есть проблема, я хочу попытаться перестроить старое изображение из репозитория. Поскольку AssemblyInfo.cs не находится под управлением версиями, а скорее сгенерированный файл, когда я сейчас пытаюсь построить, информация о версии не будет такой же, как и когда эта версия репозитория была построена с помощью CruiseControl. Я хотел бы иметь возможность генерировать ровно одно и то же изображение независимо от того, было ли оно создано во время сборки CC или позже, когда вы выходите из Subversion.

Я знаю, что это часто не рекомендуется, но нужно ли мне проверять файл assemblyInfo.cs после каждой сборки, чтобы при последующем сборке из проверки svn была использована правильная информация о версии?

Спасибо, Лиам

4b9b3361

Ответ 1

Либо не делайте версию AssemblyInfo.cs вообще, либо помещайте их в репозиторий, а CruiseControl.Net svn-revert их после сборки (я делаю это позже, так что сборки, сделанные на рабочих станциях разработчиков, легко потушенными из "официальных", загруженных с CruiseControl.Net).

Как для воспроизведения одних и тех же ярлыков сборки позже - вам уже нужно выполнить перестройку, вызвав MSBuild/NAnt вручную, просто передайте ей CCNetLabel, установленную в соответствующее значение, и вы получите те же версии сборки, что и с помощью сборки вызывается из CruiseControl.Net(MSBuild: /p:CCNetLabel=1.4.2.333, NAnt: -D:CCNetLabel=1.4.2.333).

Ответ 2

Я использую файл CommonAssemblyInfo.cs, в который я добавляю ссылку в каждом проекте.

Единственный атрибут, который у меня есть в этом файле, - AssemblyFileVersion, и CC.Net/Msbuild обновляет версию каждой сборки.

Убедитесь, что любой проект, содержащий CommonAssemblyInfo.cs, не имеет повторяющихся атрибутов в AssemblyInfo.cs.

Если вы посмотрите исходный код CC.Net, вы увидите, что они сконфигурированы так, как они сконфигурированы.

Ответ 3

Я всегда проверяю его. На самом деле я считаю, что это поведение по умолчанию с Team System Source Control.

Ответ 4

У нас есть MSBuild script, который генерирует все необходимые файлы AssemblyInfo.cs до сборки. Таким образом, я также могу использовать номер версии SVN в версиях сборки. Файлы AssemblyInfo.cs не проверяются в SVN (они игнорируются, так что они не беспокоят людей), но создаются до построения (неважно, была ли это автоматическая сборка script или из VS).

Я также поставляю пакетный файл, чтобы следить за созданием файлов AssemblyInfo.cs, чтобы разработчикам не нужно беспокоиться о деталях.