<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Clark Sell : TeamBuild</title><link>http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx</link><description>Tags: TeamBuild</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Blogging again????</title><link>http://blogs.msdn.com/csell/archive/2009/05/22/blogging-again.aspx</link><pubDate>Fri, 22 May 2009 17:02:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9635192</guid><dc:creator>csell</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/csell/comments/9635192.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=9635192</wfw:commentRss><description>&lt;p&gt;You know sometimes it’s just sad how fast time can go by.&amp;#160; Looking back it’s been well over a year maybe two since I last blogged.&amp;#160; WOW, that’s not cool.&amp;#160; So what the hell happened, well LIFE I guess.&amp;#160; Let’s see:&lt;/p&gt;  &lt;p&gt;&lt;img style="margin: 0px 70px 0px 0px; display: inline" title="question-mark1a.jpg" alt="question-mark1a.jpg" align="left" src="http://ts3.images.live.com/images/thumbnail.aspx?q=664275258942&amp;amp;id=76e13843c66fbcd2adfc6c6dabbc7509" width="83" height="111" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="left"&gt;I had my second child ( girl, Addison ).&amp;#160; We are blessed to have one of each and both healthy.&amp;#160; &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;I got to meet Bill Gates, Steve Ballmer and all of the rest of the Microsoft executives &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Bought a Honda ( needed a 4 door with 2 kids ) &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;This fiscal year I will have billed over 2300 hours which doesn’t account for my other job.&amp;#160; Can you say Year of the Death March!!! &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Ran into Sieg from the Deadliest Catch at SeaTac &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Learned how to make the perfect Margarita! &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="left"&gt;Regardless a lot has happened and it’s time to talk technology again.&amp;#160; I love it and really miss doing it. With all of the great stuff here upon us now, it’s time to start sharing. I was reading MSDN Magazine the other day when I ran across an article about &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd483291.aspx" target="_blank"&gt;MSBuild and best practices&lt;/a&gt; which really got me thinking.&amp;#160; There were two items that really stuck out for me:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Compilation of large source trees.&amp;#160; I think it’s a must read but caution readers that “large” can mean many different things.&amp;#160; &lt;/li&gt;    &lt;li&gt;Reference Management &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;While both were explained pretty well, lets put #2 into practice.&amp;#160; *I’M LAZY* ( in a good way of course ). I would much rather write something once rather than screw with it time and time again, especially the stuff you have to do like build work.&amp;#160; &lt;/p&gt;  &lt;p&gt;So lets talk assembly references….&lt;/p&gt;  &lt;p&gt;Assembly references can be easy as you want it to be but sometimes a little prep work will go a long way. The .NET compilers and runtime both have a specific order in which they look for references.&amp;#160; If you look in your framework folder for Microsoft.Common.Targets you will find the following:&lt;a href="http://blogs.msdn.com/blogfiles/csell/WindowsLiveWriter/Bloggingagain_130CA/legos_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="legos" border="0" alt="legos" align="right" src="http://blogs.msdn.com/blogfiles/csell/WindowsLiveWriter/Bloggingagain_130CA/legos_thumb.jpg" width="172" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The SearchPaths property is set to find assemblies in the following order:&amp;#160; &lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Files from current project - indicated by {CandidateAssemblyFiles} &lt;/li&gt;      &lt;li&gt;$(ReferencePath) - the reference path property, which comes from the .USER file. &lt;/li&gt;      &lt;li&gt;The hintpath from the referenced item itself, indicated by {HintPathFromItem}.&amp;#160; &lt;/li&gt;      &lt;li&gt;The directory of MSBuild's &amp;quot;target&amp;quot; runtime from GetFrameworkPath.&amp;#160; The &amp;quot;target&amp;quot; runtime folder is the folder of the runtime that MSBuild is a part of. &lt;/li&gt;      &lt;li&gt;Registered assembly folders, indicated by {Registry:*,*,*} &lt;/li&gt;      &lt;li&gt;Legacy registered assembly folders, indicated by {AssemblyFolders} &lt;/li&gt;      &lt;li&gt;Look in the application's output folder (like bin\debug) &lt;/li&gt;      &lt;li&gt;Resolve to the GAC. &lt;/li&gt;      &lt;li&gt;Treat the reference's Include as if it were a real file name. &lt;/li&gt;   &lt;/ol&gt; &lt;/blockquote&gt;  &lt;p&gt;So what if your not one of those nine?!?!?&lt;/p&gt;  &lt;p&gt;Since it’s all just angle brackets we can extend the “out of the box” search paths.&amp;#160; As it was explained in the article you can override the property &lt;em&gt;AssemblySearchPaths.&amp;#160; &lt;/em&gt;Aaron had a great post on &lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2007/07/16/msbuild-property-evaluation.aspx" target="_blank"&gt;MSBuild Property Evaluation&lt;/a&gt;, it’s something you should read.&amp;#160; Overriding a property is as simple as importing your own target file into the stack and then resetting the property ( for most cases ).&amp;#160; You could also just add a the same property further down the stack in the same file.&amp;#160; Both are essentially the same. With MSBuild the *stack is always important*.&amp;#160; If you were to import your target file or override a property to early you might change the way the entire build system works.&amp;#160; There are a number of properties that work like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;AssemblySearchPaths Condition=&amp;quot; '$(AssemblySearchPaths)' == ''&amp;quot;&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is a very common practice throughout MSBuild implementations.&amp;#160; As you can tell it’s just a way or protecting yourself from a change in behavior &lt;strong&gt;upstream&lt;/strong&gt;. Remember MSBuild parses top down to you have no influence what might be done afterwards.&amp;#160; In our case what we want to do is import our targets file &lt;strong&gt;after&lt;/strong&gt; the Microsoft.Common.Targets file in the csproj or vbproj file(s).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;Import Project=&amp;quot;$(MSBuildBinPath)\Microsoft.CSharp.targets&amp;quot; /&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;Import Project=&amp;quot;..\MyTargets.targets&amp;quot; /&amp;gt; *&lt;b&gt;NEW&lt;/b&gt;*&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;By doing so AssemblySearchPaths will be “” and initialize itself as expected.&amp;#160; So if we want to add to it it’s as simple as ( snip from MyTargets.Targets ): &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;....      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PropertyGroup&amp;gt;       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;AssemblySearchPaths&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(AssemblySearchPaths);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; C:\binaries\;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/AssemblySearchPaths&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/PropertyGroup&amp;gt;       &lt;br /&gt;....&lt;/p&gt; &lt;/blockquote&gt;  &lt;ol&gt;   &lt;li&gt;Define a Property Group &lt;/li&gt;    &lt;li&gt;Define the Property ( AssemblySearchPaths ) &lt;/li&gt;    &lt;li&gt;Set it to itself and add to itself &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Important point, &lt;strong&gt;Reference Paths are folders not files&lt;/strong&gt;.&amp;#160; So now if you compile from the cmd line or from VS you will have your paths in the stack. The easiest way to see what is going in is to simply run &lt;strong&gt;msbuild.exe /t:rebuild /v:diag &lt;/strong&gt;on your sln file.&amp;#160; That will dump everything that took place during the execution from MSBuild. Even the order of folders it searched for.&amp;#160; You will actually be able to see the reference pats listed that it couldn't find.&lt;/p&gt;  &lt;p&gt;But we are not done yet.&amp;#160; We have a hardcoded path and remember, I’m lazy. How about we bootstrap ourselves into the build process and read the file system building the search paths based on a “root” folder you specify?&amp;#160; Then any machine should work without any change.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="brush: csharp; ruler: true;"&gt;&lt;font size="1"&gt;&lt;font size="2" face="t"&gt;&amp;lt;Project InitialTargets=&amp;quot;bootstrap&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&amp;gt;

    &amp;lt;PropertyGroup&amp;gt;
        &amp;lt;referencePath&amp;gt;$(SolutionDir)..\MyBinaries\**\*.*&amp;lt;/referencePath&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;

    &amp;lt;Target Name=&amp;quot;bootstrap&amp;quot;&amp;gt;
   
    &amp;lt;CreateItem Include =&amp;quot;$(referencePath)&amp;quot;&amp;gt;
      &amp;lt;Output ItemName=&amp;quot;binariesFound&amp;quot; TaskParameter=&amp;quot;Include&amp;quot;/&amp;gt;
    &amp;lt;/CreateItem&amp;gt;
    
    &amp;lt;/Target&amp;gt;

  &amp;lt;PropertyGroup&amp;gt;
      &amp;lt;AssemblySearchPaths&amp;gt;
        $(AssemblySearchPaths);
        &lt;strong&gt;@(binariesFound-&amp;gt;'%(RootDir)%(Directory)');&lt;/strong&gt;        
      &amp;lt;/AssemblySearchPaths&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;
  
&amp;lt;/Project&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Important points:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;InitialTargets &lt;/strong&gt;was set. This gives us the ability to run *first*.&amp;#160; Why? Well we want to read the file system and build the list of folders. &lt;/li&gt;

  &lt;li&gt;We create an item during the execution of the target rather than statically. &lt;/li&gt;

  &lt;li&gt;We later transform that target just adding the folder rather than the whole file path. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Team Build has a similar concept but much easier.&amp;#160; At the bottom of any tfsbuild.proj fiile there is a commented collection called &lt;strong&gt;AdditionalReferencePath. &lt;/strong&gt;It works the same it’s just that the Team Build process does it all for you already.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9635192" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/MSBuild/default.aspx">MSBuild</category><category domain="http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx">TeamBuild</category></item><item><title>Microsoft.TeamFoundation.Build.targets ( 2005 )</title><link>http://blogs.msdn.com/csell/archive/2007/09/21/microsoft-teamfoundation-build-targets-2005.aspx</link><pubDate>Fri, 21 Sep 2007 16:41:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5033394</guid><dc:creator>csell</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/csell/comments/5033394.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=5033394</wfw:commentRss><description>&lt;p&gt;Have you ever wanted to *see* the target stack in the TeamBuild targets?&amp;#xA0; Well the wait is over.&amp;#xA0; I wish I could say I generated this on the fly but that isn't the case, but one day that will happen.&amp;#xA0; I intend to keep growing this map as I come across new items and documentation.&amp;#xA0; If you would like a copy feel free to reach out.&lt;/p&gt;  &lt;p&gt;Click on the image below for a larger clickable map.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.cshost.members.winisp.net/blog/teambuild.html" target="_blank"&gt;&lt;img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="772" alt="TeamBuild" src="http://blogs.msdn.com/blogfiles/csell/WindowsLiveWriter/Microsoft.TeamFoundation.Bui.targets2005_7A34/TeamBuild_3.jpg" width="235" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5033394" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx">TeamBuild</category></item><item><title>Build Status TFS Policy, Part II</title><link>http://blogs.msdn.com/csell/archive/2006/10/27/build-status-tfs-policy-part-ii.aspx</link><pubDate>Fri, 27 Oct 2006 20:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:882150</guid><dc:creator>csell</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/csell/comments/882150.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=882150</wfw:commentRss><description>&lt;P&gt;Since my post yesterday I just decided to update the code and also include &lt;A href="http://blogs.msdn.com/buckh/archive/2006/10/26/a-checkin-policy-to-detect-that-the-build-is-broken-in-a-ci-environment.aspx"&gt;&lt;FONT color=#005bba&gt;Buck's&lt;/FONT&gt;&lt;/A&gt; comments.&amp;nbsp; I even added a simple installer as a bonus since that last post was just useless.&amp;nbsp; Here is the new version and this time in a zip ;)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=882150" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/csell/attachment/882150.ashx" length="201477" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/csell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx">TeamBuild</category></item><item><title>Stop, the build is broken!!</title><link>http://blogs.msdn.com/csell/archive/2006/10/26/stop-the-build-is-broken.aspx</link><pubDate>Thu, 26 Oct 2006 17:24:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:876020</guid><dc:creator>csell</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/csell/comments/876020.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=876020</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It's late, your tired and yet somehow you got stuck fixing the build because junior engineer bob just fired off a check-in and took off.&amp;nbsp; It looks like the build is now broken because junior hasn't done a get latest in a month.&amp;nbsp; In the meantime 10 other people check-in and just end up compounding the problem.&lt;/p&gt; &lt;p&gt;Unfortunately things like this happen.&amp;nbsp; One day I just got so frustrated, I just wrote a custom TFS check-in policy which gets the last build status and validates a particular build type was actually passing before you check-in.&amp;nbsp; I started with&amp;nbsp;&lt;a href="http://blogs.vertigosoftware.com/teamsystem/archive/2006/02/27/2302.aspx"&gt;Jeff Atwood&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/jmanning/default.aspx"&gt;James Manning&lt;/a&gt; posts where they have done a great job explaining how to write a simple custom check-in policies.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;UPDATE::&lt;/strong&gt;&amp;nbsp; &lt;/font&gt;&lt;font color="#000000"&gt;I have since updated the policy to include a few fixes and packaged it up into an MSI and Source.&amp;nbsp; You can download that here: &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://blogs.msdn.com/csell/archive/2006/10/27/build-status-tfs-policy-part-ii.aspx" href="http://blogs.msdn.com/csell/archive/2006/10/27/build-status-tfs-policy-part-ii.aspx"&gt;http://blogs.msdn.com/csell/archive/2006/10/27/build-status-tfs-policy-part-ii.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=876020" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx">TeamBuild</category></item><item><title>Microsoft.SDC.Tasks, New Version Released</title><link>http://blogs.msdn.com/csell/archive/2006/07/12/microsoft-sdc-tasks-new-version-released.aspx</link><pubDate>Wed, 12 Jul 2006 16:32:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:663344</guid><dc:creator>csell</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/csell/comments/663344.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=663344</wfw:commentRss><description>&lt;P&gt;If you are doing anything with .Net 2.0 chances are you have a set of MSBuild files supporting your application.&amp;nbsp; That means you already know MSBuild just rocks.&amp;nbsp; What better than MSBuild?&amp;nbsp;MSBuild with a sweet task library to support it of course!&amp;nbsp; That task library would be the &lt;A href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b4d6499f-0020-4771-a305-c156498db75e"&gt;Enterprise Solutions Build Framework&lt;/A&gt; or &lt;A href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b4d6499f-0020-4771-a305-c156498db75e"&gt;Microsoft.SDC.Tasks&lt;/A&gt; as I like to call it.&lt;/P&gt;
&lt;P&gt;Well they just released a new version!&amp;nbsp; The biggest change was the introduction of BizTalk 2006 tasks.&amp;nbsp; If BizTalk isn't your fancy then you will be pleased to also know there are some new TFS tasks also.&lt;/P&gt;
&lt;P&gt;To find out more information visit &lt;A href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b4d6499f-0020-4771-a305-c156498db75e"&gt;http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b4d6499f-0020-4771-a305-c156498db75e&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;These guys do a stellar job!&amp;nbsp; I have been using this library for about a year now and it goes everywhere&amp;nbsp;I go.&lt;/P&gt;&lt;img width="0" height="0" src="http://csell.net/cptrk.ashx?id=8e728602-1878-471d-af9c-05be2ddf2637"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=663344" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/MSBuild/default.aspx">MSBuild</category><category domain="http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx">TeamBuild</category></item><item><title>The Build Master</title><link>http://blogs.msdn.com/csell/archive/2006/06/08/the-build-master.aspx</link><pubDate>Thu, 08 Jun 2006 17:07:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:622228</guid><dc:creator>csell</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/csell/comments/622228.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=622228</wfw:commentRss><description>&lt;P&gt;I don't think anyone will argue but the majority of technical books are used for reference.&amp;nbsp; OK so every so often a new book comes out and you read it cover to cover.&amp;nbsp; Well that time has come.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/vincem"&gt;Vincent Maraia&lt;/A&gt; has just authored a book called &lt;A href="http://www.bookpool.com/ss?qs=0321332059"&gt;The Build Master&lt;/A&gt;.&amp;nbsp; If you have &lt;U&gt;anything&lt;/U&gt; to do with software development then you &lt;STRONG&gt;&lt;U&gt;MUST&lt;/U&gt;&lt;/STRONG&gt; read this book.&amp;nbsp; I don't care how good you are, how many products you shipped or if you are already a build master, you &lt;STRONG&gt;&lt;U&gt;MUST&lt;/U&gt;&lt;/STRONG&gt; read this book.&lt;/P&gt;
&lt;P&gt;Every development shop must address most if not all of the topics found in this book.&amp;nbsp; If you're not, then you really need to invest some time and money in yourself and clean shop.&amp;nbsp; I guarantee things could be better.&amp;nbsp; Just ask yourself a few questions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Do you have a good concurrent development mailline strategy? Do you know what one is?&lt;/LI&gt;
&lt;LI&gt;Do you know how to branch and merge?&lt;/LI&gt;
&lt;LI&gt;Do you version?&lt;/LI&gt;
&lt;LI&gt;Do you have any automation?&lt;/LI&gt;
&lt;LI&gt;Do you have a build process?&lt;/LI&gt;
&lt;LI&gt;Do you have a build team?&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If you have answered No to any of these questions then just go buy it now and start reading.&amp;nbsp; Again regardless no matter who you are, you still need to read this book.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/vincem"&gt;Vincent Maraia&lt;/A&gt;, &lt;U&gt;Great Read &lt;/U&gt;and &lt;U&gt;Great Job&lt;/U&gt;!!! I&amp;nbsp;can't wait for the next one.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;
&lt;HR&gt;
&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Table of Contents&lt;/U&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Defining a Build&lt;/LI&gt;
&lt;LI&gt;Source Tree Configuration&lt;/LI&gt;
&lt;LI&gt;Daily Not Nightly Builds&lt;/LI&gt;
&lt;LI&gt;The Build Lab&lt;/LI&gt;
&lt;LI&gt;Build Tools&lt;/LI&gt;
&lt;LI&gt;SNAP Builds&lt;/LI&gt;
&lt;LI&gt;The Build Environment&lt;/LI&gt;
&lt;LI&gt;Visioning&lt;/LI&gt;
&lt;LI&gt;Build Security&lt;/LI&gt;
&lt;LI&gt;Managed Code Versus Unmanaged Code Builds&lt;/LI&gt;
&lt;LI&gt;Building for International&lt;/LI&gt;
&lt;LI&gt;Build Verification Tests&lt;/LI&gt;
&lt;LI&gt;Building Setup and Deploying Every Day&lt;/LI&gt;
&lt;LI&gt;Ship It&lt;/LI&gt;
&lt;LI&gt;Product Support Services&lt;/LI&gt;
&lt;LI&gt;Hotfixes or Patch Management&lt;/LI&gt;
&lt;LI&gt;Suggested Steps to Change Your Religion or Philosophy (Corporate Culture)&lt;/LI&gt;
&lt;LI&gt;Future Build Tools from Microsoft&lt;/LI&gt;&lt;/OL&gt;&lt;img width="0" height="0" src="http://csell.net/cptrk.ashx?id=e4c7d0a8-e0ac-4c7c-b821-5307fc9c1225"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=622228" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/csell/archive/tags/MSBuild/default.aspx">MSBuild</category><category domain="http://blogs.msdn.com/csell/archive/tags/TeamBuild/default.aspx">TeamBuild</category></item></channel></rss>