我在目标中定义了一个目录列表:
<Target>
<ItemGroup>
<FooDirs Include="Foo\Dir1" />
<FooDirs Include="Foo\Dir2" />
</ItemGroup>
<Target>
Run Code Online (Sandbox Code Playgroud)
现在我想在里面创建所有文件的列表@(FooDirs):
<ItemGroup>
<FooFiles Include="@(FooDirs -> '%(Identity)\**\*')" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,结果列表包含文字字符串:"Foo\Dir1\**\*;Foo\Dir2\**\*". 但是,如果我使用已弃用的<CreateItem>任务,它可以正常工作:
<CreateItem Include="@(FooDirs -> '%(Identity)\**\*')">
<Output TaskParameter="Include" ItemName="FooFiles" />
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我错过了什么?
试试这个,它将使用任务批处理正确创建 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>
Run Code Online (Sandbox Code Playgroud)
(摘自“MSBuild Trickery”技巧 #5 一书)
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |