我正在根据项目A创建项目B,并希望将所有A的元数据复制到B(并添加一些额外的元数据).
<ItemGroup>
<B Include="@A">
<M1>%(A.M1)</M1>
<M2>%(A.M2)</M2>
<M3>%(A.M3)</M3>
...
<M100>%(A.M100)</M100>
... Additional metadata specific to B ...
</B>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
而不是将每个元数据M1-M100从A单独复制到B,是否可以告诉msbuild将所有元数据从A复制到B?
这样的"批量元数据副本"能否受到限制?
就像是:
<ItemGroup>
<B Include="@A">
... Additional metadata specific to B ...
</B>
</ItemGroup>
<CopyMetadata From="@A" To="@B" Condition="... Check something ..."/>
Run Code Online (Sandbox Code Playgroud)
谢谢.
复制项目时,也会复制其元数据.请参阅MSBuild v4.0的工作示例:
<Project DefaultTargets="DoSomethingWithB" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<A Include="1">
<M1>M1 (1)</M1>
<M2>M2 (1)</M2>
<M3>M3 (1)</M3>
<N4>HERE</N4>
</A>
<A Include="2">
<M1>M1 (2)</M1>
<M2>M2 (2)</M2>
<M3>M3 (2)</M3>
</A>
</ItemGroup>
<Target Name="PrepareB" Outputs="%(A.Identity)">
<ItemGroup>
<B Include="@(A)">
<M4>M4 (%(A.Identity))</M4>
<M5 Condition="'%(A.N4)'!=''">M5 (%(A.Identity) for A.N4 != '')</M5>
</B>
</ItemGroup>
</Target>
<Target Name="DoSomethingWithB"
DependsOnTargets="PrepareB">
<Message Text="ItemGroup A" />
<Message Text="%(A.Identity): M1=%(A.M1), M2=%(A.M2), M3=%(A.M3), N4=%(A.N4)" />
<Message Text="ItemGroup B" />
<Message Text="%(B.Identity): M1=%(B.M1), M2=%(B.M2), M3=%(B.M3), N4=%(B.N4), M4=% (B.M4), M5=%(B.M5)" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
输出:
项目组A
1:M1 = M1(1),M2 = M2(1),M3 = M3(1),N4 = HERE
2:M1 = M1(2),M2 = M2(2),M3 = M3(2) ,N4 =项目
组B
1:M1 = M1(1),M2 = M2(1),M3 = M3(1),N4 = HERE,M4 = M4(1),M5 = M5(A.N4为1!= '')
2:M1 = M1(2),M2 = M2(2),M3 = M3(2),N4 =,M4 = M4(2),M5 =
| 归档时间: |
|
| 查看次数: |
1598 次 |
| 最近记录: |