Должен ли AssemblyInfo.cs быть включен в управление версиями?
У меня есть автоматическая система сборки, использующая CruiseControl. Я использую SvnRevisionLabeller для получения строки версии. С помощью этой строки я могу использовать nant для обновления AssemblyInfo.cs, поэтому, когда я ее создаю, у нее есть правильная строковая строка. Я также могу использовать эту метку CC, чтобы пометить репозиторий subversion.
Итак, все выровнено
- CCNet Build label
- Исполняемый файл (информация о сборке)
- Контроль версий (тэг subverson)
Теперь, когда у меня есть проблема, я хочу попытаться перестроить старое изображение из репозитория. Поскольку AssemblyInfo.cs не находится под управлением версиями, а скорее сгенерированный файл, когда я сейчас пытаюсь построить, информация о версии не будет такой же, как и когда эта версия репозитория была построена с помощью CruiseControl. Я хотел бы иметь возможность генерировать ровно одно и то же изображение независимо от того, было ли оно создано во время сборки CC или позже, когда вы выходите из Subversion.
Я знаю, что это часто не рекомендуется, но нужно ли мне проверять файл assemblyInfo.cs после каждой сборки, чтобы при последующем сборке из проверки svn была использована правильная информация о версии?
Спасибо,
Лиам
Ответы
Ответ 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, чтобы разработчикам не нужно беспокоиться о деталях.