Используйте SVN Revision для маркировки сборки в CCNET - PullRequest
40 голосов
/ 04 августа 2008

Я использую CCNET в примере проекта с SVN в качестве источника контроля. CCNET настроен на создание сборки при каждой регистрации. CCNET использует MSBuild для сборки исходного кода.

Я хотел бы использовать номер последней редакции для генерации AssemblyInfo.cs при компиляции. Как я могу получить последнюю версию из Subversion и использовать значение в CCNET?

Редактировать: я не использую NAnt - только MSBuild.

Ответы [ 12 ]

2 голосов
/ 03 февраля 2009

Мой подход заключается в использовании вышеупомянутого плагина для ccnet и задачи nant echo для генерации файла VersionInfo.cs, содержащего только атрибуты версии. Мне нужно только включить файл VersionInfo.cs в сборку

Задача эха просто выводит строку, которую я передаю, в файл.

Если есть похожая задача MSBuild, вы можете использовать тот же подход. Вот небольшая задача nant, которую я использую:

<target name="version" description="outputs version number to VersionInfo.cs">
  <echo file="${projectdir}/Properties/VersionInfo.cs">
    [assembly: System.Reflection.AssemblyVersion("$(CCNetLabel)")]
    [assembly: System.Reflection.AssemblyFileVersion("$(CCNetLabel)")]
  </echo>
</target>

Попробуйте это:

<ItemGroup>
    <VersionInfoFile Include="VersionInfo.cs"/>
    <VersionAttributes>
        [assembly: System.Reflection.AssemblyVersion("${CCNetLabel}")]
        [assembly: System.Reflection.AssemblyFileVersion("${CCNetLabel}")]
    </VersionAttributes>
</ItemGroup>
<Target Name="WriteToFile">
    <WriteLinesToFile
        File="@(VersionInfoFile)"
        Lines="@(VersionAttributes)"
        Overwrite="true"/>
</Target>

Обратите внимание, что я не очень близок с MSBuild, поэтому мой скрипт, вероятно, не будет работать "из коробки" и потребует исправлений ...

1 голос
/ 03 февраля 2009

Будь осторожен. Структура, используемая для номеров сборок, является лишь короткой, поэтому у вас есть предел того, насколько высокой может быть ваша ревизия.

В нашем случае мы уже превысили лимит.

Если вы попытаетесь ввести номер сборки 99.99.99.599999, свойство версии файла будет фактически иметь вид 99.99.99.10175.

...