Я вхожу в MSBuild для работы с различными целями проектов, и я нахожу его достаточно гибким.(Это также помогает мне понять возможности нашей системы CI)
Мне нужно получить текущую версию SVN проекта, для которой я написал специальную задачу, которая вызывает SubWCRev и анализирует выходные данные.
Я ссылаюсь на это с помощью элемента:
<UsingTask TaskName="xxx.Elements.Build.MSBuildTasks.SubWCRev" AssemblyFile="D:\dev\xxx_presentation\Build\xxx.Elements.Build.dll">
<ParameterGroup>
<LastCommittedRevision ParameterType="System.Int" Required="False" Output="True" />
<MixedRevisionRangeMinimum ParameterType="System.Int" Required="False" Output="True" />
<MixedRevisionRangeMaximum ParameterType="System.Int" Required="False" Output="True" />
<HasLocalModifications ParameterType="System.Boolean" Required="False" Output="True" />
</ParameterGroup>
</UsingTask>
Затем я выполняю задачу ...
<Target Name="Version" BeforeTargets="BuildDatabase">
<xxx.Elements.Build.MSBuildTasks.SubWCRev WorkingCopyDir="$(ProjectDir)..">
<Output TaskParameter="LastCommittedRevision" ItemName="LastCommittedRevision" />
<Output TaskParameter="MixedRevisionRangeMinimum" ItemName="MixedRevisionRangeMinimum" />
<Output TaskParameter="MixedRevisionRangeMaximum" ItemName="MixedRevisionRangeMaximum" />
<Output TaskParameter="HasLocalModifications" ItemName="HasLocalModifications" />
</xxx.Elements.Build.MSBuildTasks.SubWCRev>
<Message Text="Revision is @(LastCommittedRevision)" />
</Target>
Моя проблема в том, что MSBuild настаивает на том, чтобы я использовал атрибут TaskFactory,который этот документ говорит, является необязательным.И я также вижу, что TaskFactory специально для Inline Tasks, которая меня не интересует.
Сообщение об ошибке:
Обязательный атрибут "TaskFactory" пуст илиотсутствует в элементе UsingTask.
Где я ошибаюсь?
(И, кстати, я считаю MSBuild Sidekick 3 отличным иуменьшение сопротивления того, что может стать довольно сложным сценарием.)