dotnet/msbuild

Conditions on item metadata are evaluated even for empty item group

Open

#4 056 ouverte le 9 janv. 2019

Voir sur GitHub
 (1 commentaire) (2 réactions) (0 assignés)C# (1 364 forks)batch import
Area: Enginehelp wantedtriaged

Métriques du dépôt

Stars
 (5 062 stars)
Métriques de merge PR
 (Merge moyen 11j 7h) (125 PRs mergées en 30 j)

Description

Steps to reproduce

Project file

<Project>
  <Target Name="Build">
    <ItemGroup>
      <X Include="@(Empty)">
        <M Condition="!%(P)">not P</M>
      </X>
    </ItemGroup>
  </Target>
</Project>

I'd expect the condition to not be evaluated since @(Empty) is empty, so there are no items being added to X.

Expected behavior

No error reported.

Actual behavior

error MSB4113: Specified condition "!%(P)" evaluates to "!" instead of a boolean.

Environment data

msbuild /version output:

Microsoft (R) Build Engine version 15.9.14-preview+gae560092f5 for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved.

15.9.14.22190

Guide contributeur