Вы можете использовать задачи сообщества msbuild Класс версии.
например,
<PropertyGroup>
<MinorIncrement Condition=" '$(ReleaseType)' == 'Internal' ">None</MinorIncrement>
<MinorIncrement Condition=" '$(MinorIncrement)' == '' ">Increment</MinorIncrement>
<BuildIncrement>Increment</BuildIncrement>
<BuildIncrement Condition=" '$(MinorIncrement)' == 'Increment' ">Reset</BuildIncrement>
</PropertyGroup>
<Target Name="BumpVersion">
<Version VersionFile="version.txt" MinorType="$(MinorIncrement)" BuildType="$(BuildIncrement)">
<Output TaskParameter="Major" PropertyName="Major"/>
<Output TaskParameter="Minor" PropertyName="Minor"/>
<Output TaskParameter="Build" PropertyName="Build"/>
<Output TaskParameter="Revision" PropertyName="Revision"/>
</Version>
<AssemblyInfo CodeLanguage="CS" OutputFile="VersionInfo.cs" AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"/>
<Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
</Target>
В верхнем разделе я устанавливаю значения для типов выпуска. К сожалению, они, похоже, документированы только в коде.
CruisControl.Net настраивает ReleaseType извне.
Если у нас ReleaseType 'Internal', то незначительное приращение не выполняется, но номер сборки увеличивается, а если нет, мы увеличиваем вспомогательный номер и сбрасываем номер сборки.
Элемент Version будет читать версию из version.txt в форме "1.0.1.3", делать с ней что-то и затем читать ее в некоторые переменные, что и есть выходной бит (думаю!) Для использования бит, который изменяет информацию о сборке