<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Sayed Ibrahim Hashimi - MSBuild, Web Deploy (MSDeploy), ASP.NET - book</title>
    <link>http://sedodream.com/</link>
    <description>MSBuild, C#, Visual Studio and more</description>
    <language>en-us</language>
    <copyright>Sayed Ibrahim Hashimi</copyright>
    <lastBuildDate>Tue, 30 Jun 2009 03:33:13 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>sayed.hashimi@gmail.com</managingEditor>
    <webMaster>sayed.hashimi@gmail.com</webMaster>
    <item>
      <trackback:ping>http://sedodream.com/Trackback.aspx?guid=0afbc283-c3e4-4cf7-9757-83f719c258ac</trackback:ping>
      <pingback:server>http://sedodream.com/pingback.aspx</pingback:server>
      <pingback:target>http://sedodream.com/PermaLink,guid,0afbc283-c3e4-4cf7-9757-83f719c258ac.aspx</pingback:target>
      <dc:creator>Ibrahim</dc:creator>
      <wfw:comment>http://sedodream.com/CommentView,guid,0afbc283-c3e4-4cf7-9757-83f719c258ac.aspx</wfw:comment>
      <wfw:commentRss>http://sedodream.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0afbc283-c3e4-4cf7-9757-83f719c258ac</wfw:commentRss>
      <title>Elements of Reusable MSBuild Scripts: Validation </title>
      <guid isPermaLink="false">http://sedodream.com/PermaLink,guid,0afbc283-c3e4-4cf7-9757-83f719c258ac.aspx</guid>
      <link>http://sedodream.com/2009/06/30/ElementsOfReusableMSBuildScriptsValidation.aspx</link>
      <pubDate>Tue, 30 Jun 2009 03:33:13 GMT</pubDate>
      <description>
		&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;If you picked up a copy of &lt;/font&gt; &lt;a href="http://www.amazon.com/gp/product/0735626286?ie=UTF8&amp;amp;tag=sedodream-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0735626286"&gt; &lt;font size="3" face="Calibri"&gt;my
book&lt;/font&gt; &lt;/a&gt; &lt;font color="#000000" size="3" face="Calibri"&gt; then in &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;Chapter
7 External Tools&lt;/i&gt;&lt;/b&gt; you will find my rules for Creating Reusable Build Elements.
In case you don’t have it here are the rules that I’ve outlined.&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l2 level1 lfo1" class="MsoListParagraphCxSpFirst"&gt;
&lt;font color="#000000"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;Needs
to be self-contained&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l2 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font color="#000000"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;Process
needs to be transparent and extensible by the consumer&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l2 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font color="#000000"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;Overridable
behavior&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l2 level1 lfo1" class="MsoListParagraphCxSpLast"&gt;
&lt;font color="#000000"&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;4.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;font size="3"&gt; &lt;font face="Calibri"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;A
contract should be defined and validated&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/font&gt; &lt;/b&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;I personally think that this section
is one of the most important sections in the book. The ideas there are not just how
to use MSBuild but more like best practice guidance on creating uber-reusable build
scripts. It took me a while to come up with those particular rules and I am continuing
to evolve them. I’m not going to cover these topics here because it would take up
too much space and that information is already available to you. I have evolved my
validation technique and would like to discuss that here. If you have a copy of the
book then you know that I am a big fan of the pattern of splitting up data and behavior
in build scripts. To expand on this consider the project files that are created by
Visual Studio. Those project files just define a bunch of properties and items, i.e.
data. Then another file is imported, in the case of C# projects Microsoft.CSharp.targets,
which contains all the targets, i.e. behavior. By doing this you can re-use the logic
contained in the .targets files. This is the best way that I’ve found to create good
build scripts. I prefer this over using the &lt;/font&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/7z253716.aspx"&gt; &lt;font size="3" face="Calibri"&gt;MSBuild
task&lt;/font&gt; &lt;/a&gt; &lt;font color="#000000" size="3" face="Calibri"&gt; to just build another
project file. There are a lot of strange problems with that technique and it can be
very confusing to debug, especially if you are building out a bunch of different files.
I think it’s better to build up one build script (via the &lt;/font&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/7z253716.aspx"&gt; &lt;font size="3" face="Calibri"&gt;Import
element&lt;/font&gt; &lt;/a&gt; &lt;font color="#000000" size="3" face="Calibri"&gt;) and go with that.
Anywayz, this is a topic for another day.&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;Today we will talk about how we can
have an MSBuild script validate itself. From the samples provided with the book I
deliver the &lt;i style="mso-bidi-font-style: normal"&gt;nunit.targets&lt;/i&gt; file which contains
a target, &lt;i style="mso-bidi-font-style: normal"&gt;ValidateNUnitSettings&lt;/i&gt;, which
is shown below. You can download these files at the very end of this post.&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;ValidateNUnitSettings&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Validate
assumptions that are contracted&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Message&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;NUnitAssemblies:
@(NUnitAssemblies)&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;Importance&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;low&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'$(NUnitOutputDir)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;NUnitOutputDir
property not defined&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'@(NUnitAssemblies)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;NUnitAssemblies
not defined&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'%(NUnitAssemblies.ProjectName)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Atleast
1 item in NuitAssemblies doesn't have metadata 'ProjectName' defined.&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;!Exists('%(NUnitAssemblies.FullPath)')&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Couldn't
locate assembly at: %(NUnitAssemblies.FullPath)&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;So we can see that this target expects
there to be one property, &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;NUnitOutputDir&lt;/i&gt;&lt;/b&gt;,
and an item, &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;NUnitAssemblies&lt;/i&gt;&lt;/b&gt;,
to be defined. If not then an error is raised. This target is placed on the dependency
list for the UnitTest target so we know that it will be executed before that target.
Since I wrote that section in the book I noticed myself “copying and pasting” these
various validate targets and just changing the property and item names. Being a fan
of the &lt;/font&gt; &lt;a href="http://en.wikipedia.org/wiki/DRY"&gt; &lt;font size="3" face="Calibri"&gt;DRY&lt;/font&gt; &lt;/a&gt; &lt;font color="#000000" size="3" face="Calibri"&gt; principal
this didn’t sit right with me. So I began to explore better options. This is what
I’ve come up with. Imagine that you have a shared .targets file, Build.Common.targets,
which just takes a bunch of project and runs the same build process on it. This is
the file which contains the targets (behavior) and then you have another file, in
this example YourProject.proj, which is the driver for the build process. This file
mostly contains properties and item (data). Below is the YourProject.proj file.&lt;/font&gt; 
&lt;/p&gt;
&lt;h1 style="MARGIN: 10pt 0in 0pt"&gt;
&lt;span style="mso-no-proof: yes"&gt; &lt;font size="5"&gt; &lt;font color="#17365d"&gt; &lt;font face="Calibri"&gt;YourProject.proj&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/font&gt; &lt;/font&gt; &lt;/span&gt; 
&lt;/h1&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;?&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;xml&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;version&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;1.0&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;encoding&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;utf-8&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Project&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ToolsVersion&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;3.5&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;DefaultTargets&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Build&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;xmlns&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Root&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'$(Root)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt; &lt;font color="#000000"&gt;.\&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;Root&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;BuildInstallRoot&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'$(BuildInstallRoot)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt; &lt;font color="#000000"&gt;$(Root)\Build\&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;BuildInstallRoot&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;SourceRoot&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'$(SourceRoot)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt; &lt;font color="#000000"&gt;$(Root)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;SourceRoot&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;OutputRoot&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'$(OutputRoot)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;OutputRoot&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Configurations
that we want to build &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ItemGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;AllConfigurations&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Debug&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Configuration&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;Debug&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;Configuration&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;AllConfigurations&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;AllConfigurations&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Release&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Configuration&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;Release&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;Configuration&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;AllConfigurations&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ItemGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Projects
that we want to build &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ItemGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ProjectsToBuild&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;$(SourceRoot)Sedo.ProjectOne.csproj&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ProjectsToBuild&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;$(SourceRoot)Sedo.ProjectTwo.csproj&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ItemGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;span style="BACKGROUND: yellow"&gt;&amp;lt;&lt;/span&gt; &lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Import&lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Project&lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; BACKGROUND: yellow; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Build.Common.targets&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/b&gt; &lt;b style="mso-bidi-font-weight: normal"&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/b&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Project&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;Here are the contents of a very crude
and simple Build.Common.targets.&lt;/font&gt; 
&lt;/p&gt;
&lt;h1 style="MARGIN: 10pt 0in 0pt"&gt;
&lt;font color="#17365d" size="5" face="Calibri"&gt;Build.Common.targets&lt;/font&gt; 
&lt;/h1&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;?&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;xml&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;version&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;1.0&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;encoding&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;utf-8&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Project&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ToolsVersion&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;3.5&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;DefaultTargets&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Build&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;xmlns&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;ValidateBuildSettings&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ItemGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredProperties&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Root&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Value&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;$(Root)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;Value&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredProperties&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredProperties&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;BuildInstallRoot&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Value&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;$(BuildInstallRoot)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;Value&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredProperties&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredProperties&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;SourceRoot&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Value&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;$(SourceRoot)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;Value&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredProperties&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;_RequiredItems
is the item where required items should be placed.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;The
following metadata is significant:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;REQUIRED
METADATA:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Identity&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;=
This will basically be used to identify the specific required item&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;RequiredValue&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;=
This is the specific value that will be validated to exist&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;OPTIONAL
METADATA&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;RequiredFilePath&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;=
Populate this with a path that should exists, if it is not empty&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;then
it will be checked to exist on disk.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;AllConfigurations&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;RequiredValue&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;@(AllConfigurations)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;RequiredValue&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;AllConfigurations.Configuration&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;RequiredValue&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;%(AllConfigurations.Configuration)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;RequiredValue&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;ProjectsToBuild&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;RequiredValue&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;%(ProjectsToBuild.Identity)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;RequiredValue&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;RequiredFilePath&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;%(ProjectsToBuild.Identity)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;RequiredFilePath&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ItemGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Raise
an error if any value in _RequiredProperties is missing &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'%(_RequiredProperties.Value)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Missing
required property [%(_RequiredProperties.Identity)]&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Raise
an error if any value in _RequiredItems is empty &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'%(_RequiredItems.RequiredValue)'==''&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Missing
required item value [%(_RequiredItems.Identity)]&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Validate
any file/directory that should exist &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Error&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Condition&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;'%(_RequiredItems.RequiredFilePath)'
!= '' and !Exists('%(_RequiredItems.RequiredFilePath)')&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Unable
to find expeceted path [%(_RequiredItems.RequiredFilePath)] on item [%(_RequiredItems.Identity)]&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;BuildDependsOn&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;span style="BACKGROUND: yellow"&gt;ValidateBuildSettings&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;BeforeBuild;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;CoreBuild;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;AfterBuild;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;$(BuildDependsOn)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;BuildDependsOn&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Build&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;DependsOnTargets&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;$(BuildDependsOn)&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;BeforeBuild&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;AfterBuild&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;CoreBuild&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;Outputs&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;%(AllConfigurations.Configuration)&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Create
a temporary property that contains the lone configuration. This is needed because
we&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;don't
want to batch MSBuild task on both ProjectsToBuild and AllConfigurations at the same&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;time.
Anywayz since this target is batched we are guaranteed that&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;it
contains a single value within the scope of this target.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;CurrentConfig&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;%(AllConfigurations.Configuration)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;CurrentConfig&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;PropertyGroup&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!--&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; Build
the projects here, for this example we just print a message &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Message&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Text&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;Building
project [%(ProjectsToBuild.Identity)] for configuration [$(CurrentConfig)]&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt; &lt;/span&gt; &lt;span style="COLOR: red"&gt;Importance&lt;/span&gt; &lt;span style="COLOR: blue"&gt;=&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;high&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Target&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Project&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;Focus your attention on the &lt;b style="mso-bidi-font-weight: normal"&gt;ValidateBuildSettings&lt;/b&gt; target.
Instead of manually validating each property and item, I create an item _&lt;b style="mso-bidi-font-weight: normal"&gt;RequiredProperties&lt;/b&gt; for
property validation and an item _&lt;b style="mso-bidi-font-weight: normal"&gt;RequiredItems&lt;/b&gt; for
item validation. Notice the leading _ which says “Don’t touch me I’m private!” The
target populates both of those items with the values that are required for the build
script to be able to execute. Then using batching those assumptions are validated.
The property validation is pretty easy, if any value for &lt;b style="mso-bidi-font-weight: normal"&gt;_RequiredProperties.Value&lt;/b&gt; is
empty then raises an error. For items I wanted to be able to not only be able to assert
the following&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;
&lt;font color="#000000"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;The
item was defined&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font color="#000000"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;Certain
metadata values were defined&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpLast"&gt;
&lt;font color="#000000"&gt; &lt;span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;The
file exists on disk&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;So I came up with the concept of having
three metadata values on that item&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpFirst"&gt;
&lt;font color="#000000"&gt; &lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3"&gt;·&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;Identity&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font color="#000000"&gt; &lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3"&gt;·&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;RequiredValue&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpLast"&gt;
&lt;font color="#000000"&gt; &lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt; &lt;span style="mso-list: Ignore"&gt; &lt;font size="3"&gt;·&lt;/font&gt; &lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt; &lt;/span&gt; &lt;/span&gt; &lt;font size="3" face="Calibri"&gt;RequiredFilePath&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;Identity, this is just the contents
of the Include attribute on the item itself. The RequiredValue is the metadata that
will be checked to ensure that a value exists. So if you want to make sure that an
item was simply declared then you would do&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Include&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;AllConfigurations&lt;/span&gt; &lt;font color="#000000"&gt;"&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;RequiredValue&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;font color="#000000"&gt;@(AllConfigurations)&lt;/font&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;RequiredValue&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;_RequiredItems&lt;/span&gt; &lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000"&gt; &lt;font size="3" face="Calibri"&gt;If the AllConfigurations item
wasn’t declared then &lt;/font&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;@(AllConfigurations)&lt;/span&gt; &lt;font size="3" face="Calibri"&gt; would
evaluate to empty and an error would be raised. You can also do this to assert an
items metadata like &lt;/font&gt; &lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;%(AllConfigurations.Configuration)&lt;/span&gt; &lt;font size="3" face="Calibri"&gt;.
And for RequiredFilePath, if that metadata value was defined then the validation target
will make sure that the file is located on disk as expected.&lt;/font&gt; &lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;You have to keep in mind that this is
not just about validation. It’s also about usability. You may be wondering when I
say that. But think about it, in one target I have been able to express to you (the
person consuming the .targets file) everything that you need to define in great detail.
And if you get it wrong then the process will stop itself, instead of potentially
continuing in an erroneous scenario.&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font color="#000000" size="3" face="Calibri"&gt;Here is what the result would look like
if I had forgotten to define the AllConfigurations item.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="" src="http://www.sedodream.com/content/binary/070609_0332_ElementsofR1.png" /&gt; 
&lt;/p&gt;
&lt;p&gt;
And here it is after I inserted it. 
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="" src="http://www.sedodream.com/content/binary/070609_0332_ElementsofR2.png" /&gt; 
&lt;/p&gt;
&lt;p&gt;
This was one of my longer posts in a while, but I think that there is much more to
this topic. I think this goes pretty deep, but if you understand these ideas then
you are well on your way to writing some sweet reusable build scripts. 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.sedodream.com/content/binary/Build.Common.targets.txt"&gt;Build.Common.targets&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.sedodream.com/content/binary/YourProject.proj.txt"&gt;YourProject.proj&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Sayed Ibrahim Hashimi 
&lt;/p&gt;
</description>
      <comments>http://sedodream.com/CommentView,guid,0afbc283-c3e4-4cf7-9757-83f719c258ac.aspx</comments>
      <category>book</category>
      <category>MSBuild</category>
    </item>
    <item>
      <trackback:ping>http://sedodream.com/Trackback.aspx?guid=02cf772b-687f-4add-8d06-b888ef43fc04</trackback:ping>
      <pingback:server>http://sedodream.com/pingback.aspx</pingback:server>
      <pingback:target>http://sedodream.com/PermaLink,guid,02cf772b-687f-4add-8d06-b888ef43fc04.aspx</pingback:target>
      <dc:creator>Ibrahim</dc:creator>
      <wfw:comment>http://sedodream.com/CommentView,guid,02cf772b-687f-4add-8d06-b888ef43fc04.aspx</wfw:comment>
      <wfw:commentRss>http://sedodream.com/SyndicationService.asmx/GetEntryCommentsRss?guid=02cf772b-687f-4add-8d06-b888ef43fc04</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p style="MARGIN-LEFT: 36pt">
The other day Dan Moseley from the MSBuild team wrote up <a href="http://www.amazon.com/review/RX6CVKXV2PY46/ref=cm_cr_rdp_perm&amp;tag=sedodream-20">a
review</a> on the <a href="http://www.amazon.com/gp/product/0735626286?ie=UTF8&amp;tag=sedodream-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0735626286">books
Amazon page</a>. Here are the contents of the review 
</p>
        <blockquote>
          <p>
I'm a developer on MSBuild; Sayed wrote this book with our encouragement, and we reviewed
it for accuracy and completeness, so I can recommend it. The documentation for MSBuild
in 2.0 and 3.5 was not great; I consider this something like the missing manual. Unfortunately
there aren't many other MSBuild books; fortunately Sayed did a good job on this one. 
</p>
        </blockquote>
        <blockquote>
          <p>
We're fixing a lot of what's "missing" in MSBuild in the upcoming version 4.0 -- I
hope Sayed can do a 2nd edition when that comes out. Plus, our docs should be better
then :-) 
</p>
        </blockquote>
        <p>
I'm glad to say that this review was posted as 5 out of 5 and that is the 9<sup>th</sup> review
(out of 9) which has been given 5 stars. When we wrote the book I knew that we had
put something together that would really meet a specific need. I'm happy to see that
the book has been accepted soo well by everyone and I hope that we are able to write
a second edition as Dan mentioned. 
</p>
        <p>
Sayed Ibrahim Hashimi 
</p>
      </body>
      <title>MSBuild Team Reviews Book</title>
      <guid isPermaLink="false">http://sedodream.com/PermaLink,guid,02cf772b-687f-4add-8d06-b888ef43fc04.aspx</guid>
      <link>http://sedodream.com/2009/06/29/MSBuildTeamReviewsBook.aspx</link>
      <pubDate>Mon, 29 Jun 2009 03:31:19 GMT</pubDate>
      <description>
		&lt;p style="MARGIN-LEFT: 36pt"&gt;
The other day Dan Moseley from the MSBuild team wrote up &lt;a href="http://www.amazon.com/review/RX6CVKXV2PY46/ref=cm_cr_rdp_perm&amp;amp;tag=sedodream-20"&gt;a
review&lt;/a&gt; on the &lt;a href="http://www.amazon.com/gp/product/0735626286?ie=UTF8&amp;amp;tag=sedodream-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0735626286"&gt;books
Amazon page&lt;/a&gt;. Here are the contents of the review 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I'm a developer on MSBuild; Sayed wrote this book with our encouragement, and we reviewed
it for accuracy and completeness, so I can recommend it. The documentation for MSBuild
in 2.0 and 3.5 was not great; I consider this something like the missing manual. Unfortunately
there aren't many other MSBuild books; fortunately Sayed did a good job on this one. 
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
We're fixing a lot of what's "missing" in MSBuild in the upcoming version 4.0 -- I
hope Sayed can do a 2nd edition when that comes out. Plus, our docs should be better
then :-) 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I'm glad to say that this review was posted as 5 out of 5 and that is the 9&lt;sup&gt;th&lt;/sup&gt; review
(out of 9) which has been given 5 stars. When we wrote the book I knew that we had
put something together that would really meet a specific need. I'm happy to see that
the book has been accepted soo well by everyone and I hope that we are able to write
a second edition as Dan mentioned. 
&lt;/p&gt;
&lt;p&gt;
Sayed Ibrahim Hashimi 
&lt;/p&gt;
</description>
      <comments>http://sedodream.com/CommentView,guid,02cf772b-687f-4add-8d06-b888ef43fc04.aspx</comments>
      <category>book</category>
      <category>msbuild</category>
      <category>review</category>
    </item>
    <item>
      <trackback:ping>http://sedodream.com/Trackback.aspx?guid=80a701fa-8747-4c47-917b-83d5aecf0565</trackback:ping>
      <pingback:server>http://sedodream.com/pingback.aspx</pingback:server>
      <pingback:target>http://sedodream.com/PermaLink,guid,80a701fa-8747-4c47-917b-83d5aecf0565.aspx</pingback:target>
      <dc:creator>Ibrahim</dc:creator>
      <wfw:comment>http://sedodream.com/CommentView,guid,80a701fa-8747-4c47-917b-83d5aecf0565.aspx</wfw:comment>
      <wfw:commentRss>http://sedodream.com/SyndicationService.asmx/GetEntryCommentsRss?guid=80a701fa-8747-4c47-917b-83d5aecf0565</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My brother <a href="http://sayedhashimi.com/">Sayed Y. Hashimi</a> just released a
new book <a href="http://www.amazon.com/gp/product/1430215968?ie=UTF8&amp;tag=sedodream-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1430215968">Pro
Android: Developing Mobile Applications for G1 and Other Google Phones</a>. 
</p>
        <p>
          <a href="http://www.amazon.com/gp/product/1430215968?ie=UTF8&amp;tag=sedodream-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1430215968">
            <img border="0" alt="" src="http://www.sedodream.com/content/binary/070609_0325_ProAndroidB1.png" />
          </a>
        </p>
        <p>
I'm not an Android developer so I cannot speak about specifics about the content but
here is the TOC so you can get a better idea of what the book contains. 
</p>
        <ol>
          <li>
Introducing the Android Computing Platform 
</li>
          <li>
Getting Your Feet Wet 
</li>
          <li>
Using Resources, Content Providers, and Intents 
</li>
          <li>
Building User Interfaces and Using Controls 
</li>
          <li>
Working with Menus and Dialogs 
</li>
          <li>
Unveiling 2D Animation 
</li>
          <li>
Exploring Security and Location-Based Services 
</li>
          <li>
Building and Consuming Services 
</li>
          <li>
Using the Media Framework and Telephony APIs 
</li>
          <li>
Programming 3D Graphics with OpenGL 
</li>
          <li>
Managing and Organizing Preferences 
</li>
          <li>
Coming to Grips with 1.5 
</li>
          <li>
Simplifying OpenGL and Exploring Live Folders 
</li>
        </ol>
        <p>
          <br />
Sayed Ibrahim Hashimi
</p>
      </body>
      <title>Pro Android Book</title>
      <guid isPermaLink="false">http://sedodream.com/PermaLink,guid,80a701fa-8747-4c47-917b-83d5aecf0565.aspx</guid>
      <link>http://sedodream.com/2009/06/25/ProAndroidBook.aspx</link>
      <pubDate>Thu, 25 Jun 2009 03:26:28 GMT</pubDate>
      <description>
		&lt;p&gt;
My brother &lt;a href="http://sayedhashimi.com/"&gt;Sayed Y. Hashimi&lt;/a&gt; just released a
new book &lt;a href="http://www.amazon.com/gp/product/1430215968?ie=UTF8&amp;amp;tag=sedodream-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1430215968"&gt;Pro
Android: Developing Mobile Applications for G1 and Other Google Phones&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.com/gp/product/1430215968?ie=UTF8&amp;amp;tag=sedodream-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1430215968"&gt; &lt;img border="0" alt="" src="http://www.sedodream.com/content/binary/070609_0325_ProAndroidB1.png" /&gt; &lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I'm not an Android developer so I cannot speak about specifics about the content but
here is the TOC so you can get a better idea of what the book contains. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Introducing the Android Computing Platform 
&lt;/li&gt;
&lt;li&gt;
Getting Your Feet Wet 
&lt;/li&gt;
&lt;li&gt;
Using Resources, Content Providers, and Intents 
&lt;/li&gt;
&lt;li&gt;
Building User Interfaces and Using Controls 
&lt;/li&gt;
&lt;li&gt;
Working with Menus and Dialogs 
&lt;/li&gt;
&lt;li&gt;
Unveiling 2D Animation 
&lt;/li&gt;
&lt;li&gt;
Exploring Security and Location-Based Services 
&lt;/li&gt;
&lt;li&gt;
Building and Consuming Services 
&lt;/li&gt;
&lt;li&gt;
Using the Media Framework and Telephony APIs 
&lt;/li&gt;
&lt;li&gt;
Programming 3D Graphics with OpenGL 
&lt;/li&gt;
&lt;li&gt;
Managing and Organizing Preferences 
&lt;/li&gt;
&lt;li&gt;
Coming to Grips with 1.5 
&lt;/li&gt;
&lt;li&gt;
Simplifying OpenGL and Exploring Live Folders 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;br /&gt;
Sayed Ibrahim Hashimi
&lt;/p&gt;
</description>
      <comments>http://sedodream.com/CommentView,guid,80a701fa-8747-4c47-917b-83d5aecf0565.aspx</comments>
      <category>Android</category>
      <category>book</category>
      <category>Java</category>
    </item>
    <item>
      <trackback:ping>http://sedodream.com/Trackback.aspx?guid=0a472ecd-c1a1-4124-a8fd-21fce656ac01</trackback:ping>
      <pingback:server>http://sedodream.com/pingback.aspx</pingback:server>
      <pingback:target>http://sedodream.com/PermaLink,guid,0a472ecd-c1a1-4124-a8fd-21fce656ac01.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://sedodream.com/CommentView,guid,0a472ecd-c1a1-4124-a8fd-21fce656ac01.aspx</wfw:comment>
      <wfw:commentRss>http://sedodream.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0a472ecd-c1a1-4124-a8fd-21fce656ac01</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After my previous <a href="http://www.sedodream.com/PermaLink,guid,311945ed-d336-4714-9e43-67fee0c2ee48.aspx">entry</a> a
reader requested that I post a table of contents for my book <a href="http://www.amazon.com/gp/product/0735626286?ie=UTF8&amp;tag=sedodream-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0735626286">Inside
the Microsoft Build Engine</a>. After searching I realized that I didn't have one.
So I put one together here it is. 
</p>
        <h1>
          <span style="text-decoration:underline">Contents at a Glance </span>
        </h1>
        <h2>Part I Overview 
</h2>
        <ol>
          <li>
MSBuild Quick Start 
</li>
          <li>
MSBuild Deep Dive, Part 1 
</li>
          <li>
MSBuild Deep Dive, Part 2 
</li>
        </ol>
        <h2>Part II Customizing MSBuild 
</h2>
        <ol>
          <li>
Custom Tasks 
</li>
          <li>
Custom Loggers 
</li>
        </ol>
        <h2>Part III Advanced MSBuild Topics 
</h2>
        <ol>
          <li>
Batching and Incremental Building 
</li>
          <li>
External Tools 
</li>
        </ol>
        <h2>Part IV MSBuild Cookbook 
</h2>
        <ol>
          <li>
Practical Applications, Part 1 
</li>
          <li>
Practical Applications, Part 2 
</li>
        </ol>
        <h2>Part V Team Foundation Build 
</h2>
        <ol>
          <li>
Team Build Quick Start 
</li>
          <li>
Team Build Deep Dive 
</li>
          <li>
Team Build Cookbook 
</li>
        </ol>
        <h2>Appendixes 
</h2>
        <ul>
          <li>
New Features in MSBuild 3.5 
</li>
          <li>
Common Properties and Items 
</li>
          <li>
New Features in Visual Studio Team System 2010 Team Build 
</li>
        </ul>
        <p>
        </p>
        <p>
Sayed Ibrahim Hashimi
</p>
      </body>
      <title>Inside the Microsoft Build Engine: Table of Contents</title>
      <guid isPermaLink="false">http://sedodream.com/PermaLink,guid,0a472ecd-c1a1-4124-a8fd-21fce656ac01.aspx</guid>
      <link>http://sedodream.com/2009/04/11/InsideTheMicrosoftBuildEngineTableOfContents.aspx</link>
      <pubDate>Sat, 11 Apr 2009 15:55:18 GMT</pubDate>
      <description>&lt;p&gt;
After my previous &lt;a href="http://www.sedodream.com/PermaLink,guid,311945ed-d336-4714-9e43-67fee0c2ee48.aspx"&gt;entry&lt;/a&gt; a
reader requested that I post a table of contents for my book &lt;a href="http://www.amazon.com/gp/product/0735626286?ie=UTF8&amp;amp;tag=sedodream-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0735626286"&gt;Inside
the Microsoft Build Engine&lt;/a&gt;. After searching I realized that I didn't have one.
So I put one together here it is. 
&lt;/p&gt;
&lt;h1&gt;&lt;span style="text-decoration:underline"&gt;Contents at a Glance &lt;/span&gt;
&lt;/h1&gt;
&lt;h2&gt;Part I Overview 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
MSBuild Quick Start 
&lt;/li&gt;
&lt;li&gt;
MSBuild Deep Dive, Part 1 
&lt;/li&gt;
&lt;li&gt;
MSBuild Deep Dive, Part 2 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Part II Customizing MSBuild 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
Custom Tasks 
&lt;/li&gt;
&lt;li&gt;
Custom Loggers 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Part III Advanced MSBuild Topics 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
Batching and Incremental Building 
&lt;/li&gt;
&lt;li&gt;
External Tools 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Part IV MSBuild Cookbook 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
Practical Applications, Part 1 
&lt;/li&gt;
&lt;li&gt;
Practical Applications, Part 2 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Part V Team Foundation Build 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
Team Build Quick Start 
&lt;/li&gt;
&lt;li&gt;
Team Build Deep Dive 
&lt;/li&gt;
&lt;li&gt;
Team Build Cookbook 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Appendixes 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
New Features in MSBuild 3.5 
&lt;/li&gt;
&lt;li&gt;
Common Properties and Items 
&lt;/li&gt;
&lt;li&gt;
New Features in Visual Studio Team System 2010 Team Build 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Sayed Ibrahim Hashimi
&lt;/p&gt;</description>
      <comments>http://sedodream.com/CommentView,guid,0a472ecd-c1a1-4124-a8fd-21fce656ac01.aspx</comments>
      <category>MSBuild</category>
      <category>book</category>
    </item>
  </channel>
</rss>