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

Zai*_*zvi 2 msbuild task

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

我正在使用以下代码:

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

但是我收到了错误

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

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

谢谢

Zai*_*zvi 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>
Run Code Online (Sandbox Code Playgroud)