A Little Batching Brainteaser

Every so often as we work through converting the Visual Studio builds over to MSBuild we stumble across a little quirk or entertaining bit of MSBuild XML that makes the team scratch its head. Dan sent this one around to the team a couple of weeks ago, and it's related to our previous post about unqualified metadata.

How many x's does the following MSBuild XML produce?

<

Project DefaultTargets="Build" xmlns=https://schemas.microsoft.com/developer/msbuild/2003>
<ItemGroup>
<Foo Include="a"/>
<Foo Include="b"/>
<Foo Include="c"/>
<Bar Include="a"/>
<Bar Include="b"/>
<Bar Include="c"/>
</ItemGroup>
<Target Name="Build">
<Message Text="@(Foo) @(Bar)" Condition="'%(Foo.Identity)'=='%(Bar.Identity)'"/>
</Target>
</Project>

To make it easier we'll make the question multiple choice. Is the answer:

a) 0
b) 2
c) 3
d) 9

No cheating! You can't run this through MSBuild to find out. Take a guess first, then try it out.

[ Author: Neil Enns]