我有一个目标内定义的目录列表:
<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>
这是一个错误还是我漏了什么?
.Identity
,这导致了扩展到\ **
。 不幸的是,由于其他问题,使用ItemGroups仍然是一个严重的痛点。MSBuild可能是有史以来最糟糕的构建系统。 - Marcin Wisnicki