2013-06-11 48 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

酷,它的作品!謝了哥們 –