Я хочу использовать 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-файле по-прежнему есть версия по умолчанию, как и раньше.