преобразовать группу элементов в другую группу элементов с подстановочными знаками - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть список каталогов, определенных внутри цели:

<Target>
  <ItemGroup>
    <FooDirs Include="Foo\Dir1" />
    <FooDirs Include="Foo\Dir2" />
  </ItemGroup>
<Target>

Теперь я хочу создать список всех файлов внутри @(FooDirs):

<ItemGroup>
  <FooFiles Include="@(FooDirs -> '%(Identity)\**\*')" />
</ItemGroup>

К сожалению, этого не происходитработа, результирующий список содержит буквенные строки: "Foo\Dir1\**\*;Foo\Dir2\**\*".Однако, если я использую устаревшую задачу <CreateItem>, она работает нормально:

<CreateItem Include="@(FooDirs -> '%(Identity)\**\*')">
  <Output TaskParameter="Include" ItemName="FooFiles" />
</CreateItem>

Это ошибка или я что-то упустил?

1 Ответ

4 голосов
/ 02 сентября 2011

Попробуйте вместо этого, он будет правильно создавать FooFiles, используя пакетную задачу:

<Target Name="Foo"> 
   <ItemGroup> 
      <FooDirs Include="Foo\Dir1" /> 
      <FooDirs Include="Foo\Dir2" /> 
   </ItemGroup> 
   <ItemGroup> 
      <FooFiles Include="%(FooDirs.Identity)\**\*" />
   </ItemGroup> 
   <Message Text="%(FooFiles.Identity)" />
</Target> 

(Выдержка из книги "MSBuild Trickery", трюк № 5)

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