Следует ли поместить AssemblyInfo.cs в систему контроля версий? - PullRequest
20 голосов
/ 11 июня 2009

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

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

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

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

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

Ответы [ 4 ]

7 голосов
/ 12 июня 2009

Либо вообще не устанавливайте версию 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).

7 голосов
/ 24 июля 2009

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

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

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

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

2 голосов
/ 11 июня 2009

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

1 голос
/ 18 декабря 2009

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

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

...