清空MSBuild ItemGroup

Zai*_*zvi 16 msbuild itemgroup

有没有办法在不诉诸目标的情况下删除ItemGroup的内容?我正在寻找相当于的东西:

<ItemGroup>
  <MyItemGroup Remove="@(MyItemGroup)"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

谢谢

Rit*_*ton 15

不,正如文档所述,Remove只能包含在Target内的ItemGroup中.我不确定为什么在你的情况下使用Target是一个问题,但是如果想为每个构建配置使用'Remove'步骤,那么将它添加到BeforeXXXX AfterXXX钩子之一,比如BeforeBuild.

ItemGroup'删除'文档

从.NET Framework 3.5开始,Target元素可能包含可能包含item元素的ItemGroup元素.这些项元素可以包含Remove属性,该属性从项类型中删除特定项(文件).例如,以下XML从Compile项类型中删除每个.config文件.

<Target>
  <ItemGroup>
    <Compile Remove="*.config"/>
  </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)

  • 警告 - *.config只匹配实际存在的文件.假设@(编译)是A.config; B.config但只存在A.config.然后在删除后,@(编译)仍将包含B.config.如果项目不代表文件,则没有通配符AFAIK. (4认同)
  • 你想要删除的msbuild脚本中有什么?a)一个不存在的文件b)不是文件? (3认同)

wei*_*eir 10

现在有.

MSBuild 15中有什么新功能

  • Item外部目标元素具有新Update属性.此外,已消除Remove属性的限制.

  • @RitchMelton 怎么做?你能给我代码吗? (3认同)
  • @walterlv - 它是原始问题中的确切代码:) (3认同)