dotnet/msbuild

Conditions on item metadata are evaluated even for empty item group

Open

#4.056 geöffnet am 9. Jan. 2019

Auf GitHub ansehen
 (1 Kommentar) (2 Reaktionen) (0 zugewiesene Personen)C# (1.364 Forks)batch import
Area: Enginehelp wantedtriaged

Repository-Metriken

Stars
 (5.062 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 11T 7h) (125 gemergte PRs in 30 T)

Beschreibung

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

Contributor Guide