Генератор номеров пользовательских сборок Teamcity

Наша сборка Teamcity в настоящее время генерирует номера сборки в формате 1.0.0.[SVN REVISION], которые она передает в MSBUILD.

Мне нужно изменить это на формат 1.0.[DLL VERSION].[SVN REVISION], где мы вставляем версию зависимой dll без точек. Например, если наша зависимая dll имеет версию 1.2.3.4, сгенерированный номер сборки будет 1.0.1234.[ВЕРСИЯ SVN].

Зависимая dll является частью исходного кода сборки, поэтому я надеялся, что смогу что-то сделать с параметрами сборки и небольшим исполняемым файлом, который запрашивает информацию о версии, но не вижу способа включить это через пользовательский интерфейс.

Любые идеи, если это возможно?


person Matt    schedule 01.11.2011    source источник


Ответы (1)


Вы можете вывести номер сборки во время выполнения скрипта сборки, и teamcity будет использовать этот вывод для маркировки сборки. Например, я помечаю свою сборку той же версией, что и в AssemblyInfo.cs. Часть этой версии (Major, Minor) фактически уже находится в файле, другая часть (Build, Revision) добавляется во время сборки.

Из моего сценария msbuild:

<Target Name="Setup">
    <!-- Version.txt contains the major and minor version numbers, 
         The build number and revision come from environment variables
         in the next step -->
    <Version VersionFile="Version.txt" BuildType="None" RevisionType="None">
        <Output TaskParameter="Major" PropertyName="Major" />
        <Output TaskParameter="Minor" PropertyName="Minor" />
    </Version>

    <!-- If you want to build a release without going through the build
         server, you should define the following 2 environment variables
         when running this build script -->

    <!-- BUILD_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Build" />
    </CreateProperty>

    <!-- BUILD_VCS_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_VCS_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Revision" />
    </CreateProperty>       

    <AssemblyInfo CodeLanguage="CS"  
        OutputFile="Properties\VersionInfo.cs" 
        AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
        AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />

    <!-- Tell the build server what our actual build number is -->
    <Message Text="##teamcity[buildNumber '$(Major).$(Minor).$(Build).$(Revision)']" />
</Target>

вы просто выводите версию во время сборки, формат ##teamcity[buildNumber '<buildnum>']

person sylvanaar    schedule 01.11.2011
comment
Это именно то, что мне было нужно. Спасибо! - person Matt; 01.11.2011
comment
Текущая документация по этой функции находится здесь. - person Hank Schultz; 24.06.2015