Оцените товар несколько раз - PullRequest
1 голос
/ 17 февраля 2012

Не уверен, что это правильный заголовок для вопроса, но я пытаюсь сделать следующее:

<ItemGroup>
    <item1 Include="a;b;c;"/>
    <item2 Include="x;y;z;"/>
    <itemNames Include="item1;item2"/>
</ItemGroup>

<Target Name="DefaultName">
    <Message Text="%(%(itemNames.Identity))"/>
</Target>

Я ожидаю, что результат будет:

a;b;c;
x;y;z;

Вместо этого вывод:

%(item1)
%(item2)

Так что я предполагаю, что свойство Text анализируется только один раз, а полученная строка - нет. Есть какие-нибудь обходные пути?

1 Ответ

1 голос
/ 18 февраля 2012

Следующее будет выдавать искомый вывод:

    <ItemGroup> 
       <item1 Include="a;b;c;"/> 
       <item2 Include="x;y;z;"/> 
       <itemNames Include="item1;item2"/> 
    </ItemGroup> 

    <Target Name="DefaultName"
       Outputs="%(itemNames.Identity)">
       <PropertyGroup>
          <ThisItem>%(itemNames.Identity)</ThisItem>
       </PropertyGroup>
       <ItemGroup>
          <ThisItem Include="@($(ThisItem))" />
       </ItemGroup>
       <Message Text="@(ThisItem)" />
    </Target> 

... показывает следующий вывод ...

DefaultName:
  a;b;c
DefaultName:
  x;y;z

Извлечено из MSBuild Trickery трюки № 68 и 69

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...