Как использовать Msbuild.Community.Tasks.Version в файле csproj

Я хочу использовать VersionTask из задач сообщества MSBuild, чтобы установить тип расчета Revision. Однако мне сложно понять, как на самом деле подключить задачу к моему файлу csproj.

В проекте есть AssemblyInfo.cs, для которого определен следующий атрибут:

[assembly: AssemblyVersion("3.2.5.*")]

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

Я поместил настроенную задачу версии в файл csproj следующим образом:

<UsingTask TaskName="MyCo.Build.Tasks.Version" AssemblyFile="$(SolutionDir)\..\Build\.build\MyCo.Build.Tasks.dll" />

Фактическая задача затем вызывается следующим образом:

  <Target Name="BeforeBuild">
<Message Text="Setting Revision Number to $(BuildNumber)" />
<MyCo.Build.Tasks.Version RevisionType="BuildServerNumber" Revision="$(BuildNumber)" /></Target>

Я вижу, что цель BeforeBuild вызывается из-за задачи сообщения, но exe-файл по-прежнему имеет стандартную сгенерированную нумерацию следующим образом: Версия файла: 3.2.5.27547

Я ожидал чего-то вроде 3.2.5.111 (номер сборки передается в MSBuild в качестве параметра).

Поскольку задача «Версия» отменяет стандартную обработку значения «*» для версии «Ревизия», я не считаю, что действительно необходимо изменять файл AssemblyInfo.cs.

Нужно ли мне передавать выходное значение задачи «Версия» в параметр MSBuild? Действительно ли мне нужно использовать задачу AssemblyVersion для обновления значений в файле?

Очевидно, я пытаюсь избежать изменения AssemblyInfo.cs, я просто хочу переопределить обработку номера версии.

Может кто-нибудь посоветует, пожалуйста?

РЕДАКТИРОВАТЬ: я только что нашел следующий пример использования в файле chm из установщика, который частично отвечает на мой вопрос.

           <Version BuildType="Automatic" RevisionType="Automatic" Major="1" Minor="3" >
            <Output TaskParameter="Major" PropertyName="Major" />
            <Output TaskParameter="Minor" PropertyName="Minor" />
            <Output TaskParameter="Build" PropertyName="Build" />
            <Output TaskParameter="Revision" PropertyName="Revision" />
        </Version>
        <Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>

Однако, когда я запускаю сборку, я могу вывести сгенерированную версию сборки в задаче сообщения, но в exe-файле по-прежнему есть версия по умолчанию, как и раньше.


person Redeemed1    schedule 30.05.2013    source источник


Ответы (2)


У меня есть решение здесь: Как изменить номер версии

В конце концов, мне пришлось обновить файл AssemblyInfo для каждого проекта во время сборки. Итак, на сервере сборки (TeamCity) я поместил необходимый мне код в файл Microsoft.Common.targets, чтобы он не требовался в каждом объявлении проекта, а затем передал номер выпуска и номер сборки TeamCity каждой задаче сборки.

person Redeemed1    schedule 28.06.2013

Ревизия - это количество дней с 01.01.2000, когда вы устанавливаете его в автоматический режим - вы можете указать свою собственную «StartDate», если хотите.

person Todd Carter    schedule 26.06.2013