如何将ItemList添加到MSBuild中的默认ItemDefinitionGroup元数据?

时间:2011-07-21 18:39:20

标签: msbuild task

我正在尝试将给定目录中的所有文件添加到ClCompile元数据的ForcedUsingFiles参数中。

我正在使用以下代码:

<ItemGroup>
  <ForcedUsingFilesList Include="c:\path\to\files\*" />
</ItemGroup>
<ItemDefinitionGroup>
  <ClCompile>
    <ForcedUsingFiles>@(ForcedUsingFilesList)</ForcedUsingFiles>
  </ClCompile>
</ItemDefinitionGroup>

但我收到了错误

  

元数据“ForcedUsingFiles”的值“@(ForcedUsingFilesList)”   包含项列表表达式。项目列表表达式不是   允许使用默认元数据值。

我知道如何解决这个错误吗?

由于

1 个答案:

答案 0 :(得分:6)

啊,看起来我需要添加一个额外的间接层来将ItemList转换为Property。然后我可以将属性粘贴到ItemDefinitionGroup。

以下代码完成了这个伎俩,希望有更直接的方法来做到这一点:

  <ItemGroup>
    <ForcedUsingFilesList Include="c:\path\to\files\*" />
  </ItemGroup>
  <PropertyGroup>
    <ForcedUsingFilesList2>
        @(ForcedUsingFilesList->'%(FullPath)')
    </ForcedUsingFilesList2>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>     
      <ForcedUsingFiles>$(ForcedUsingFilesList2)</ForcedUsingFiles>
    </ClCompile>
  </ItemDefinitionGroup>