2
我有一个目标内定义的目录列表其他的ItemGroup:变换的ItemGroup与通配符
<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>
这是bug还是我失去了一些东西?
不幸的是它阻止了一会儿,然后用模具OutOfMemoryException异常。 –
划痕,它的工作原理!忘记了''**'扩大了的'.Identity'。 不幸的是,由于其他问题,使用ItemGroups仍然是一个严重的PITA。 MSBuild可能是有史以来设计的最差的构建系统。 –
我已经将此标记为答案,但它仍然很好地知道为什么变换不起作用(如果它是一个错误 - 我认为我在MSDN上看到了一些表示这两个表单应该等同的东西)。 –