清空MSBuild项目组

清空MSBuild项目组,msbuild,itemgroup,Msbuild,Itemgroup,有没有一种方法可以在不使用目标的情况下删除ItemGroup的内容?我要找的东西相当于: <ItemGroup> <MyItemGroup Remove="@(MyItemGroup)"/> </ItemGroup> 谢谢否,如文档所述,删除只能包含在目标中的项目组中。我不确定为什么在您的案例中使用目标是一个问题,但是如果希望对每个构建配置使用“删除”步骤,那么将其添加到BeforeXXXX AfterXXX钩子之一,如BeforeBuild 从.

有没有一种方法可以在不使用目标的情况下删除ItemGroup的内容?我要找的东西相当于:

<ItemGroup>
  <MyItemGroup Remove="@(MyItemGroup)"/>
</ItemGroup>


谢谢

否,如文档所述,删除只能包含在目标中的项目组中。我不确定为什么在您的案例中使用目标是一个问题,但是如果希望对每个构建配置使用“删除”步骤,那么将其添加到BeforeXXXX AfterXXX钩子之一,如BeforeBuild

从.NETFramework 3.5开始,目标元素可能包含可能包含item元素的ItemGroup元素。这些项元素可以包含删除属性,该属性从项类型中删除特定项(文件)。例如,以下XML从编译项类型中删除每个.config文件


现在有了

  • Item
    目标之外的元素有一个新的
    Update
    属性。此外,
    Remove
    属性的限制也已取消

你说得对。不可能在目标之外执行此操作。我删除了我的答案,并选择您的答案为有用;)@很高兴知道。我想我错过了一些东西。注意,*.config将只匹配实际存在的文件。假设@(Compile)是一个.config;B.config,但仅存在A.config。然后在删除之后,@(Compile)仍将包含B.config。如果项不代表文件,则不存在通配符AFAIK。在msbuild脚本中,您希望删除的内容是a)不存在的文件b)不是文件?@RitchMelton-不代表文件的项有时用于msbuild脚本;例如,请参见
XmlPeek
任务()的
Result
输出参数。此外,即使项目确实表示文件,有时也可以在不查询文件系统的情况下使用
Remove
;例如,请参见Microsoft.Common.CurrentVersion.targets中的这些行:@RitchMelton如何操作?你能给我密码吗?@walterlv-这正是原始问题中的密码:)