如果ItemGroup包含项目,如何进行MSBuild Condition测试?

Ray*_*Ray 16 msbuild conditional-statements

这应该很简单,但我找不到如何做到这一点(或者可能不可能).

在MSBuild中,我有一个ItemGroup,它是一个文件列表.我想只在特定文件在该ItemGroup中时才执行任务

就像是:

<Copy Condition="@(Files) <contains> C:\MyFile.txt" .... />
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?最好不要编写自定义任务.

编辑:文件列表仅与条件有关.否则它与任务无关.

rad*_*cal 15

尝试

<Copy Condition="'%(Files.Identity)' == 'C:\MyFile.txt'" .. />

  • 它将遍历多个批次,但当条件为真时,复制任务将仅执行一次.@(Files)不需要是您正在复制的文件集,我们在此处仅使用它来确保只有在@(Files)中存在"C:\ MyFile.txt"时才执行此复制任务. (3认同)
  • 太糟糕了,这只适用于实际任务而不是每个可能的"条件"属性. (3认同)