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 值展平项目没有意义......

4

1 回答 1

0

看来它是按元数据值分组的。如果您要将第二个 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)" />
于 2013-06-12T02:04:45.783 回答