【问题标题】:How do I do a MSBuild Condition testing if an ItemGroup contains an item?如果 ItemGroup 包含项目,我如何进行 MSBuild 条件测试?
【发布时间】:2011-11-27 12:07:54
【问题描述】:

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

在 MSBuild 中,我有一个 ItemGroup,它是一个文件列表。 仅当特定文件位于该 ItemGroup 中时,我才想执行任务

类似:

<Copy Condition="@(Files) <contains> C:\MyFile.txt" .... />

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

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

【问题讨论】:

    标签: msbuild conditional-statements


    【解决方案1】:

    试试

    &lt;Copy Condition="'%(Files.Identity)' == 'C:\MyFile.txt'" .. /&gt;

    【讨论】:

    • 是的,这应该可以。 % 将使其通过所有现有文件“迭代”... 相当于: 等等...
    • 也许我误解了这一点,但我实际上只想执行一次复制,而我正在复制的内容不在文件列表中,它是不同的东西。文件列表仅针对条件
    • 它将遍历多个批次,但当条件为真时,复制任务只会执行一次。 @(Files) 不需要是您要复制的文件集,我们在这里使用它只是为了确保仅当 @(Files) 中存在“C:\MyFile.txt”时我们才执行此复制任务.
    • 太糟糕了,这只适用于实际任务,而不适用于所有可能的“条件”属性。
    • 这可以为每个匹配项执行一项任务,但是如果您想执行例如仅当 ALL 或 NONE 匹配时才执行?
    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2015-02-28
    • 2010-09-09
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多