Свойство MSBuild не обновляется, чтобы отразить идентификатор текущего элемента.

У меня есть сценарий MSBuild с определенными Target и ItemGroup.

Внутри цели я определяю PropertyGroup следующим образом:

<PropertyGroup>
    <StartedMessage>##teamcity[testStarted name='%(Names.Identity)']</StartedMessage>
    <FinishedMessage>##teamcity[testFinished name='%(Names.Identity)']</FinishedMessage>
    <TestStatus>testPassed</TestStatus>
</PropertyGroup>

Проблема в том, что эти свойства оцениваются только один раз (когда вызывается цель) и поэтому не отражают правильное значение (метаданные идентичности) элемента, который я повторяю.

Есть ли способ отложить (ленивую) оценку свойств во время выполнения? Или как правильно определить «динамические» свойства, которые необходимо изменить при повторении ItemGroup?


person lysergic-acid    schedule 01.05.2013    source источник


Ответы (1)


Не уверен, какой смысл помещать группу элементов в группу свойств, может быть, что-то вроде этого?

<Project  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Tests Include="Hack;Destroy;Terminate"/>
</ItemGroup>

<Target Name="Iterate">
<Message text="Started %(Tests.Identity)"/>
</Target>
</Project>
person James Woolfenden    schedule 02.05.2013
comment
Дело в том, что я пытаюсь упростить выражения, которые необходимо написать, чтобы избежать ошибок. Я хотел бы создать группу свойств, которая для каждого запуска элемента Identity пакетной группы элементов будет содержать соответствующий элемент, а затем использовать это свойство внутри цели (вместо того, чтобы писать полную строку в каждом месте, где это необходимо). - person lysergic-acid; 02.05.2013