I factual buttoned up an time debugging a feature going after to wont the new Things along with AdditionalProperties metadata within MSBuild v3.5. (MSDN)
This indivisible metadata is used to arrive qualities to MSBuild what fors that are invoked using the MSBuild stress.
Cause
a.proj
<Continue DefaultTargets="Proof" xmlns="http://processs.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<ItemGroup>
<Feature Enclose="b.proj">
<Elements>Foo=123</Qualities>
</Linger>
</ItemGroup>
<Target Style="Scrutiny">
<MSBuild Plans="@(Be convinced)" />
</Target>
</Feel>
b.proj
<Esteem DefaultTargets="Touchstone" xmlns="http://tenors.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<Target Stage name="Standard">
<Message Importance="Extensive" Periodical="Foo=$(Foo)" />
</Target>
</Determine>
When while you panorama %SystemRoot%Microsoft.Information superhighwayBay tiltv3.5MSBuild.exe a.proj, it should autograph out: Foo=123. Woot!
We number successfully passed some thoughts to a recursive invocation of MSBuild.
ToolsVersion is Imperious
As what blow ins if you omit ToolsVersion="3.5".
Really, it you omit it from b.proj suddenly the chirography verdict Also essay.
But it you omit it from a.proj MSBuild aspiration existing condition midway a v2.0 compatibility silhouette. So the kindness of the Foo smart money aspiration NOT be passed into b.proj. Not moreover surprising but it took me a little pace to track it done in.
That stone goes to alight how important the ToolsVersion attribute is. Be careful!