2013-06-11 52 views
0

我有这样的任务:不需要的项目名称压扁

<ItemGroup> 
    <Folder Include="d:\Trunk"> 
     <BranchName>MyBranch</BranchName> 
    </Folder>   
    <Folder Include="d:\8.1"> 
     <BranchName>MyBranch</BranchName> 
    </Folder>   
    </ItemGroup> 
    <Message Text="BranchName: %(Folder.BranchName), Folder: @(Folder)" /> 

我所期待:

BranchName: MyBranch, Folder: d:\Trunk 
BranchName: MyBranch, Folder: d:\8.1 

我已经有了:

BranchName: MyBranch, Folder: d:\Trunk;d:\8.1 

我知道压扁项目标识是MSBuild的一项功能。但是摆脱这一点是否可行?按MetaData值拼合项目没有任何意义...

回答

1

看起来它是按元数据值分组的。如果你要改变第二BRANCHNAME节点的值设置为“AnotherBranch”你有这样的输出:

BranchName: MyBranch, Folder: d:\Trunk 
BranchName: AnotherBranch, Folder: d:\8.1 

您使用分组由BRANCHNAME,所以该分支的所有项目组合在一起,所以通过文件夹的身份让组,看看是否给了我们预期的效果:

<Message Text="Branch: @(Folder->Metadata('BranchName')), Folder: %(Folder.Identity)" /> 

输出:

Branch: MyBranch, Folder: d:\Trunk 
Branch: MyBranch, Folder: d:\8.1 

编辑:

或者你可以删除@符号和直接引用项元数据:

<Message Text="Branch: %(Folder.BranchName), Folder: %(Folder.Identity)" /> 
+0

酷,它的作品!谢了哥们 –