<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://vsteamsystemcentral.com/cs21/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>Kevin Israel</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Five part series on SharePoint development</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/08/04/five-part-series-on-sharepoint-development.aspx</link><pubDate>Tue, 05 Aug 2008 02:52:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:264</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/264.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=264</wfw:commentRss><description>&lt;P&gt;I was asked to put the Richmond Code Camp Powerpoint Presentation up as people wanted the PowerPoint slide deck and the sample code as well. Well, as they say better late than never...&lt;img src="http://vsteamsystemcentral.com/cs21/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;
&lt;P&gt;I really want to deliver a series that will help developers that are hearing all the talk about SharePoint development but are not certain on how&amp;nbsp;to get started developing applications in SharePoint. My goal is to help you understand the environment setup for development, provide an overview of the SharePoint architecure, explain the different aspects of SharePoint development and provide some good code examples that will get you started.&lt;/P&gt;
&lt;P&gt;Consider this the first in a 5 part series on SharePoint development. The&amp;nbsp;Code Camp&amp;nbsp;PowerPoint used at the Richmond 2008.1 Code Camp is located &lt;A class="" title="SharePoint 101 Powerpoint" href="http://www.innsbrookdotnetug.org/downloads/SharePoint%20101.ppt" target=_blank&gt;here&lt;/A&gt;. I am modifying the code to be more beneficial and in-depth than what I delivered at RCC since this is a different delivery&amp;nbsp;format.&lt;/P&gt;
&lt;P&gt;There are different functional areas of SharePoint development (although many SharePoint developers cross over to develop in these different functional areas). For example, there&amp;nbsp;is web part development - specific web controls which can be developed and deployed to a SharePoint instance, InfoPath forms development&amp;nbsp;- developing a web based form using&amp;nbsp;InfoPath as the design mechanism and then deploying to an&amp;nbsp;instance of SharePoint that utilizes the Forms services,&amp;nbsp;client facing applications that hook into SharePoint via its API and/or its web services and numerous other types of applications that may utilize the SharePoint Shared Services.&lt;/P&gt;
&lt;P&gt;This particular 5 part series will focus on:&lt;BR&gt;
&lt;OL&gt;
&lt;LI&gt;Setting up your environment to develop a SharePoint application&lt;/LI&gt;
&lt;LI&gt;Introduction to SharePoint architecture&lt;/LI&gt;
&lt;LI&gt;SharePoint development using the SharePoint API&lt;/LI&gt;
&lt;LI&gt;SharePoint development using the SharePoint Web Services&lt;/LI&gt;
&lt;LI&gt;Understanding the programmatic difference between MOSS and WSS&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Part 1 - Setting up your environment to develop a SharePoint application&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SharePoint development is primarily done on a development server hosting IIS and minimally Windows SharePoint Services (WSS). For this blog we are going to be focusing on WSS 3.0.&lt;/P&gt;
&lt;P&gt;You can get into development with SharePoint fairly easily, lets do an inventory of what you will need: &lt;BR&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Server 2003 or 2008&lt;/LI&gt;
&lt;LI&gt;Visual Studio 2005 or 2008&lt;/LI&gt;
&lt;LI&gt;Windows SharePoint Services 3.0 &lt;/LI&gt;
&lt;LI&gt;MOSS 2007 (Installing MOSS&amp;nbsp;will install WSS) is optional but not required.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now the above mentioned can be either a phyical server or you can (like many developers) install Windows Server 2003 or 2008 to run on a virtual machine. I cannot speak at this point as to how Windows Server 2008 runs virtually. I can tell you that I personally have 2 physical servers with Windows 2003 intalled and VS 2005 on one and VS 2008 on the other. Both have WSS 3.0 installed and MOSS 2007.&lt;/P&gt;
&lt;P&gt;I also have a laptop with Virtual PC installed on it and after installing Virtual PC I installed Windows 2003 Server and after installing Windows 2003 Server, I installed Visual Studio 2008 to run on the Windows 2003 Server. If you want to&amp;nbsp;try it out with no investment, here are the links you will need to get you up and rolling. &lt;BR&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" title="Free Virtual PC from Microsoft" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6&amp;amp;displaylang=en" target=_blank&gt;Virtual PC&lt;/A&gt; or VMWare&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" title="Windows 2003" href="http://technet.microsoft.com/en-us/windowsserver/bb430831.aspx" target=_blank&gt;Windows 2003 Server&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" title="Visual Studio 2008 Trial" href="http://msdn.microsoft.com/en-us/vstudio/products/aa700831.aspx"&gt;Visual Studio 2008&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;WSS is part of Windows 2003 Server but if you need it, it is &lt;A class="" title="WSS 3.0 SP1" href="http://www.microsoft.com/downloads/details.aspx?familyid=EF93E453-75F1-45DF-8C6F-4565E8549C2A&amp;amp;displaylang=en" target=_blank&gt;here&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If you are going the virtual machine route&amp;nbsp;you will need to verify that your host system can handle the&amp;nbsp;OS -&amp;nbsp;remember that your Windows 2003 Server running virtually will still consume space and RAM and that these won't be available to the host system. Make sure you can give your virtual server enough RAM and space to handle not only Windows SharePoint Services&amp;nbsp;but other&amp;nbsp;installations such as the .Net framework, Visual Studio,&amp;nbsp; and one thing everyone forgets about..Windows updates (of course that is assuming you have internet connectivity and can receive them).&lt;/P&gt;
&lt;P&gt;Install Virtual PC, then create a new virtual hard drive, installing Windows 2003 to that .vhd. After you have completed the installation of the OS you will also need to install IIS, and WSS, and then Visual Studio (Express version can be used if neccessary but I recommend the full Visual Studio trial over an express version for this).&lt;/P&gt;
&lt;P&gt;Ok well that's it for now. I'll have part 2 posted (Introduction to SharePoint architecture) on Thursday morning and then we can move into code. Until then...take care!&lt;/P&gt;
&lt;P&gt;-Kevin&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=264" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Code+Camps/default.aspx">Code Camps</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/.Net/default.aspx">.Net</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/WSS/default.aspx">WSS</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/SharePoint+Development/default.aspx">SharePoint Development</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/SharePoint+Programming/default.aspx">SharePoint Programming</category></item><item><title>Utilizing SharePoint services (WSS) for your application</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/07/29/utilizing-sharepoint-services-for-your-application.aspx</link><pubDate>Tue, 29 Jul 2008 18:39:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:260</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/260.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=260</wfw:commentRss><description>&lt;P&gt;I have heard a rumor going around that &lt;STRONG&gt;&lt;EM&gt;real&lt;/EM&gt;&lt;/STRONG&gt; SharePoint developers only write code utillizing the SharePoint API. &lt;/P&gt;
&lt;P&gt;I have heard a rumor going around that &lt;STRONG&gt;&lt;EM&gt;real&lt;/EM&gt;&lt;/STRONG&gt; SharePoint developers &lt;EM&gt;never&lt;/EM&gt; utilize the set of SharePoint web services available to them.&lt;/P&gt;
&lt;P&gt;To this I say horse hocky!&lt;/P&gt;
&lt;P&gt;For the sake of clarity, let me say for the record that I am not talking about web parts. We all know you must have admin rights to install a web part and that you must be on the&amp;nbsp;server hosting SharePoint in order to install the web part. &lt;/P&gt;
&lt;P&gt;I am&amp;nbsp;talking about pure programmatic interaction with SharePoint: creating sites, sub sites, document libraries, folders, lists of all types, adding users etc. You get the idea.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let me explain. I love utilizing the depth of SharePoint assemblies that togther comprise the SharePoint API.&amp;nbsp;That being said there are times when utilizing the SharePoint web services are not only beneficial but arguably preferred, I would even say neccessary. Why neccessary you say? Well suppose you are writing an application that must be used to manipulate MOSS or WSS programatically yet you have no access to install&amp;nbsp;your application on the server that hosts SharePoint. You have admin rights to SharePoint itself but not the server hosting it. What then? What if the requirement says that you must write a client application that talks to SharePoint cross network? Tell me how you do &lt;EM&gt;that&lt;/EM&gt; with the SharePoint API? &lt;/P&gt;
&lt;P&gt;What did you say? You don't like web services? Think there overrated? Oh, performance...OK. Well go back and tell your customer that you don't give a rip about thier security protocols. Tell your customer that web services suck and you just don't get the whole&amp;nbsp;asynchronous thing, therefore forget it. Can't do the project. That just means more opportunities for me. &lt;img src="http://vsteamsystemcentral.com/cs21/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;
&lt;P&gt;I don't see the SharePoint&amp;nbsp;API as competing with the SharePoint web services. I see them as vital and complimentary partners. Together they provide &lt;EM&gt;alternatives&lt;/EM&gt;, something &lt;EM&gt;&lt;STRONG&gt;real &lt;/STRONG&gt;&lt;/EM&gt;developers consider when faced with a problem or task.&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=260" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Code+Camps/default.aspx">Code Camps</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/.Net/default.aspx">.Net</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/WSS/default.aspx">WSS</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/SharePoint+Development/default.aspx">SharePoint Development</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/SharePoint+Programming/default.aspx">SharePoint Programming</category></item><item><title>INETA Community Champions Award and Community Excellence Award</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/07/10/community-champions-award.aspx</link><pubDate>Fri, 11 Jul 2008 03:21:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:244</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/244.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=244</wfw:commentRss><description>&lt;P&gt;Hello all! I want to take a few moments to tell you about some really great things happening at INETA. I was talking to &lt;A class="" title="David Silverlights Blog" href="http://www.community-credit.com/cs/blogs/default.aspx" target=_blank&gt;David Silverlight&lt;/A&gt; the other day&amp;nbsp;about some of the cool programs that INETA is making available to the developer community, namely the &lt;STRONG&gt;Community Champions Award&lt;/STRONG&gt; and the &lt;STRONG&gt;Community Excellence Award&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The INETA Community Champions Award&amp;nbsp;is a really&amp;nbsp;great program and I encourage lots of participation from the developer community.&amp;nbsp;It is awarded on a quarterly basis and lasts for twelve months. Members record their activities to earn points for their numerous contributions to the community. At the end of each quarter the top contributors will be selected to receive the INETA Community Champion Award. &lt;/P&gt;
&lt;P&gt;The INETA Community Excellence Award is awarded&amp;nbsp;by nomination, the community is responsible for&amp;nbsp;nominating&amp;nbsp;potential candiates for Community Excellence Award. This award is for those bastions of service, you know the ones I'm talking about..the ones that keep on giving and giving no matter what. The ones that go above and beyond, who mentor us and whom we rely on and look up to, to quote the INETA web site "they inspire us to stretch our horizons; and they help provide us with resources along the way."&lt;/P&gt;
&lt;P&gt;To find&amp;nbsp;out more about these awesome programs, click &lt;A class="" title=CommunityChampionInfo href="http://www.ineta.org/Champions/CommunityChampionInfo.aspx" target=_blank&gt;here&lt;/A&gt;. Check out David's blog here -&amp;gt; &lt;A class="" title="Community Champions Award" href="http://www.community-credit.com/cs/blogs/community_credit_news/archive/2008/06/17/the-ineta-community-champion-award.aspx" target=_blank&gt;Community Champions Award&lt;/A&gt;&amp;nbsp;or the &lt;A class="" title="Community Excellence Award" href="http://www.community-credit.com/cs/blogs/community_credit_news/archive/2008/06/17/the-ineta-community-excellence-award.aspx" target=_blank&gt;Community Excellence Award.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;-Kevin&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=244" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Application+Lifecyle+Management/default.aspx">Application Lifecyle Management</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Code+Camps/default.aspx">Code Camps</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/.Net/default.aspx">.Net</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/WSS/default.aspx">WSS</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>Richmond Code Camp 2008.2 will be on October 4th 2008</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/07/10/richmond-code-camp-2008-2-will-be-on-october-4th-2008.aspx</link><pubDate>Fri, 11 Jul 2008 02:13:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:243</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/243.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=243</wfw:commentRss><description>&lt;P&gt;Announcement!!! &lt;/P&gt;
&lt;P&gt;Come one, come all! Richmond Code Camp 2008.2 will be held October 4th, 2008.&lt;/P&gt;
&lt;P&gt;Details will follow over the next month or two...if you are thinking about presenting then you have some time to plan out your topics!&lt;/P&gt;
&lt;P&gt;-Kevin&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=243" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Code+Camps/default.aspx">Code Camps</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/.Net/default.aspx">.Net</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>I'm hyped about upcoming Code Camps! Roanoke &amp; Richmond! </title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/02/24/i-m-hyped-about-upcoming-code-camps-roanoke-richmond.aspx</link><pubDate>Mon, 25 Feb 2008 04:30:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:165</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/165.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=165</wfw:commentRss><description>&lt;P&gt;Man I saw the topics list for the upcoming &lt;A class="" title="Roanoke Code Camp" href="http://www.rvnug.org/CodeCamp.aspx" target=_blank&gt;Roanoke Code Camp&lt;/A&gt; and man it looks good! Think I'll just have to mosey on down there and hang out with some .Net folks and my good ole friends &lt;A class="" title="Geekettte's Blogette" href="http://geekswithblogs.net/redwards/Default.aspx" target=_blank&gt;Robin Edwards&lt;/A&gt;&amp;nbsp;and &lt;A class="" title="Andy Leonard Applied Team System" href="http://vsteamsystemcentral.com/cs21/blogs/applied_team_system/default.aspx" target=_blank&gt;Andy Leonard&lt;/A&gt; this coming weekend.&lt;/P&gt;
&lt;P&gt;&lt;A class="" title="Roanoke Code Camp Registration" href="https://www.clicktoattend.com/invitation.aspx?code=123784" target=_blank&gt;Roanoke Code Camp Registration&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;And don't forget that the Richmond Code Camp is April 26th. I have a feeling that it will be be really good as well, so put it on you calender..&lt;/P&gt;
&lt;P&gt;Look me up if you are going to be attending the Code Camp at Roanoke this weekeend. Se you there!&lt;/P&gt;
&lt;P&gt;-Kevin&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=165" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Code+Camps/default.aspx">Code Camps</category></item><item><title>Check it out - What’s New in IIS7 and Extending ASP.NET 2.0 Application Services</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/01/09/check-it-out-what-s-new-in-iis7-and-extending-asp-net-2-0-application-services.aspx</link><pubDate>Thu, 10 Jan 2008 04:22:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:140</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/140.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=140</wfw:commentRss><description>&lt;P class=MsoBodyText2 style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Franklin Gothic Book"&gt;Check out the latest coding solutions with like-minded developers at MSDN Events. Witness the evolution of IIS and see why IIS7 is our most extensible, manageable and secure Web platform on record. You’ll learn how to extend application services – including membership, role management and navigation – from ASP.NET and how to consume them from a wide variety of clients. As a special bonus, we’re also tackling the biggest security risks and clueing you in to the top counter measures available for Websites and Web applications of all kinds. Don’t miss these free, live sessions that are really on your wavelength. Sign up today!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoBodyText2 style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Franklin Gothic Book"&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoBodyText2 style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face="Franklin Gothic Book"&gt;Richmond Area:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032359653"&gt;http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032359653&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;All others:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.msdnevents.com/"&gt;http://www.msdnevents.com/&lt;/A&gt;&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=140" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category></item><item><title>Its a new year and the changes keep coming!</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2008/01/09/its-a-new-year-and-the-changes-keep-coming.aspx</link><pubDate>Thu, 10 Jan 2008 02:03:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:139</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/139.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=139</wfw:commentRss><description>&lt;P&gt;Well along with making sure that I write the year as &lt;STRIKE&gt;2007&lt;/STRIKE&gt; 2008 correctly, the new year has brought forth many changes for me; some good, some great. &lt;/P&gt;
&lt;P&gt;I am no longer working at&amp;nbsp;CarMax&amp;nbsp;(I do miss my many good friends there). I am working for the City of Richmond (VA) helping them implement Visual Studio Team System, helping them with ALM and CM, helping them move to a SOA, maybe some .Net Training with some standards and methodology thrown in. &lt;/P&gt;
&lt;P&gt;I am no longer teaching at ECPI** but am&amp;nbsp;going to be working for a company based out of NJ in a senior development role working with C# and SharePoint (gotta show some love for those telecommuting opportunities).&lt;/P&gt;
&lt;P&gt;I bought a new Desktop and have switched everything over to Vista Business and am enjoying it very very much although I am d&lt;SPAN style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:'Calibri','sans-serif';mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:'Times New Roman';mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;efinitely&lt;/SPAN&gt; out of my comfort zone, let me tell you.&lt;/P&gt;
&lt;P&gt;Finally purchased a new sever with Windows 2003 (yeah it can handle the upgrade to 2008, no problems there). Got it over the holidays, been &lt;STRIKE&gt;working&lt;/STRIKE&gt; playing with WSS 3.0, SQL 2008 and TFS 2008 and Exchange 2007.&lt;/P&gt;
&lt;P&gt;Installed Visual Studio 2008 Team System and I've got 2 words for ya...Wow and Wow.&lt;/P&gt;
&lt;P&gt;Have joined INETA's technical team and will begin helping them complete development on thier new website.&lt;/P&gt;
&lt;P&gt;Am contemplating setting up a Visual Studio Team System User Group here in the Richmond area (again Wow).&lt;/P&gt;
&lt;P&gt;(My wife is reading this over my shoulder as I am typing this and is reminding me in a very &lt;STRIKE&gt;nice&lt;/STRIKE&gt; irritated way that I left out&amp;nbsp;the most important thing:&amp;nbsp;I got a new gecko for Christmas, aptly named Reptar (Rugrats....heres lookin at you Andy &lt;img src="http://vsteamsystemcentral.com/cs21/emoticons/emotion-2.gif" alt="Big Smile" /&gt;, and my kids who named him are 17 and 11!). Yes I ask for an Iguana, I get the Geico lizard hmm....Reptar is a leopard gecko, but I have yet to hear any accent!&lt;/P&gt;
&lt;P&gt;I am looking forward to being more involved with the .Net community this year.&lt;/P&gt;
&lt;P&gt;Last but not least, I am happy that my wife Sherri is staying home to spend more time with &lt;STRIKE&gt;Hellion&lt;/STRIKE&gt; Hunter and &lt;STRIKE&gt;Wild Child&lt;/STRIKE&gt; Nikki and me!&lt;/P&gt;
&lt;P&gt;Happy New Year to everyone.&lt;/P&gt;
&lt;P&gt;-Kevin&amp;nbsp;&lt;/P&gt;
&lt;P&gt;** Note - We will still be holding our .Net User Group meetings&amp;nbsp;at ECPI Innsbrook&amp;nbsp;along with our Code Camps....&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=139" width="1" height="1"&gt;</description></item><item><title>Become a Task Master - Customizing the build process using Visual Studio - Part 3</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/11/05/become-a-task-master-customizing-the-build-process-using-visual-studio-part-3.aspx</link><pubDate>Tue, 06 Nov 2007 00:18:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:100</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/100.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=100</wfw:commentRss><description>&lt;P&gt;Hello everyone! Man I am in love with this cooler weather. I've got a faculty conference coming up this week for ECPI so I wanted to get this last piece out there. &lt;/P&gt;
&lt;P&gt;This is part 3 in a 3 part series and should give you a decent overview of customized builds through custom tasks using MSBuild with Visual Studio (2005 I hope) or using TeamBuild with Team Foundation Server and Visual Studio Team System.&lt;/P&gt;
&lt;P&gt;In case you are just joining us I have included two links for your reference:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;I) &lt;A class="" title="Task Master 1" href="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/03/become-a-task-master-pt-1.aspx"&gt;Integrating MSBuild into your Visual Studio IDE&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;II) &lt;A class="" title="Task Master 2" href="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/25/become-a-task-master-customizing-the-build-process-using-visual-studio-part-2.aspx"&gt;Creating a Custom Task&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now that we have covered how to add MSBuild to your VS IDE and how to create a custom build Task, the final destination on our path to a customized build process lays just in front of us.&lt;/P&gt;
&lt;P&gt;The file that the build uses is a project file. Some of the characteristics of a project file are that its extension ends in .csproj or .vbproj&amp;nbsp; (or simply .proj if using TeamBuild), that it contains metadata about a project and holds this metadata in an XML format and that it "communicates" with the build engine via a set of predefined "events" called targets and predefined instructions called tasks. Of course there are other cool things in the project file: Item Groups, Property Groups, Compile includes etc. &lt;/P&gt;
&lt;P&gt;OK that's it...secrets out. Nothing magic. Predefined targets (sequential "events") in the project file that the build engine understands. We are done! Ok maybe not quite. Almost though.&lt;/P&gt;
&lt;P&gt;Consider the following: &lt;BR&gt;&amp;nbsp; &amp;lt;Target Name="AfterBuild"&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;Message Text="Executing AfterBuild target..." /&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/Target&amp;gt;&lt;/P&gt;
&lt;P&gt;The target name is "AfterBuild" and I bet you can't guess when it executes can you? If you said "Hey Kevin after the build completes!"&amp;nbsp; then I would "Brilliant!". When watching your build progress output you will see a line of output that says "Executing AfterBuild target...". To recap, the target is "AfterBuild" and the task is "Message". Message is an "out of the box" task which has an attribute (property) called Text, which is set by an author when customizing the build.&lt;/P&gt;
&lt;P&gt;Let's pretend that we need to implement our awesome BuildLogger Task which is part of our DemoCustomTasks project. We compile our project and create a folder called CustomTasks on our C drive (on the build machine). We stick the compiled DemoCustomTasks assembly in the CustomTasks folder.&lt;/P&gt;
&lt;P&gt;Consider the following:&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;lt;UsingTask TaskName="DemoCustomTasks.BuildLogger" AssemblyFile="C:\CustomTasks\DemoCustomTasks.dll" /&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;Target Name="BeforeBuild"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Message Text="Executing BeforeBuild target..." /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;BuildLogger LogFileLocation="C:\test.txt" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Message Text="Completed BeforeBuild target..." /&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/Target&amp;gt; &lt;/P&gt;
&lt;P&gt;In the above code we use the UsingTask build node to identify 1) the namespace and type name of our custom Task and 2) the physical assembly that contains the custom Task. We place our custom Task within a Target, in this case "BeforeBuild". &amp;nbsp;When BeforeBuild gets called by the build engine, the Tasks contained therein get called namely Message, BuildLogger and Message. Notice the correlation between:&lt;/P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;BuildLogger LogFileLocation="C:\test.txt" /&amp;gt; 
&lt;P&gt;and&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; public class BuildLogger : Task&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[RequiredAttribute]&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public string LogFileLocation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Wow. It all seems to make sense somehow! Just a little more and we will finish this 3 part series. I want to show you a couple of additional things we can do in builds. The following example shows the use of a Property Group to create one or more reusable constants that can be referenced in the build.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;lt;PropertyGroup&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CustomTaskPath&amp;gt;C:\ CustomTasks &amp;lt;/CustomTaskPath&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LogFilePath&amp;gt;C:\ Build Log Files&amp;lt;/LogFilePath&amp;gt; &lt;BR&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;UsingTask TaskName="DemoCustomTasks.BuildLogger" AssemblyFile="$(CustomTaskPath)\ DemoCustomTasks.dll" /&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;Target Name="BeforeBuild"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;BuildLogger LogFileLocation="$(LogFilePath)\buildlog.txt" /&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/Target&amp;gt;&lt;/P&gt;
&lt;P&gt;We can also create and call custom Targets that can then be called from pre-defined targets. This is done using the "DependsOnTargets" attribute of the pre-defined target.&lt;/P&gt;
&lt;P&gt;&amp;lt;Target Name="BeforeBuild" DependsOnTargets="LogBuild" /&amp;gt; &lt;BR&gt;&amp;lt;UsingTask TaskName="DemoCustomTasks.BuildLogger" AssemblyFile="$(CustomTaskPath)\CustomTasks\DemoCustomTasks.dll" /&amp;gt; &lt;BR&gt;&amp;lt;Target Name="LogBuild"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Message Text="Executing LogBuild target..." /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;BuildLogger LogFileLocation="$(LogFilePath)\buildlog.txt" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Message Text="Completed LogBuild target..." /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/Target&amp;gt;&lt;/P&gt;
&lt;P&gt;It is my sincere hope that this has shed some light on how to customize your build process using either MSBuild or Team Build. In the future I will try to cover NAnt and CruiseControl.Net and some other topics like how to get information from the custom Task back to the build.&lt;/P&gt;
&lt;P&gt;Take care! -Kevin&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=100" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Application+Lifecyle+Management/default.aspx">Application Lifecyle Management</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MSBuild/default.aspx">MSBuild</category></item><item><title>Become a Task Master - Customizing the build process using Visual Studio - Part 2</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/25/become-a-task-master-customizing-the-build-process-using-visual-studio-part-2.aspx</link><pubDate>Fri, 26 Oct 2007 01:14:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:91</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/91.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=91</wfw:commentRss><description>&lt;P&gt;This is part 2 of a 3 part series aimed at understanding how to create and implement custom tasks using either MSBuild or TeamBuild. Click &lt;A class="" title="Task Master Part 1" href="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/03/become-a-task-master-pt-1.aspx"&gt;here&lt;/A&gt; for part 1. The overall presentation was&amp;nbsp;given at&amp;nbsp;the last &lt;A class="" title="Richmond Code Camp" href="http://richmondcodecamp.org/"&gt;Richmond .Net Code Camp.&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In part 1 we covered how to add MSBuild to the Visual Studio IDE since the default build engine is &lt;STRONG&gt;not&lt;/STRONG&gt; MSBuild. Team Build uses a simular build engine to MSBuild and the following code example will work in both. Now we&amp;nbsp;move into&amp;nbsp;creating custom tasks.&lt;/P&gt;
&lt;P&gt;Custom tasks are created by&amp;nbsp;utilizing&amp;nbsp;Microsoft build assemblies. We &lt;EM&gt;reference&lt;/EM&gt; those assemblies and then &lt;EM&gt;using&lt;/EM&gt; those assemblies, (sorry couldn't help it &lt;img src="http://vsteamsystemcentral.com/cs21/emoticons/emotion-2.gif" alt="Big Smile" /&gt;) we are able to&amp;nbsp;develop&amp;nbsp;our custom tasks by extending the Microsoft.Build.Utilities.Task class.&lt;/P&gt;
&lt;P&gt;Start Visual Studio and select a C# project that is a class library.&amp;nbsp;For this example we will call&amp;nbsp;the project DemoCustomTasks.&amp;nbsp;We will change the filename for our class to BuildLogger.cs and will also want to refactor the class name as needed. Set references to Microsoft.Build.Utilities and Microsoft.Build.Framework. Within the source code for my class I need to add 3 using statements:&lt;/P&gt;using System.IO;&lt;BR&gt;using Microsoft.Build.Utilities;&lt;BR&gt;using Microsoft.Build.Framework;&lt;BR&gt;
&lt;P&gt;So far my class essentially looks like this:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; System;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; System.IO;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Microsoft.Build.Utilities;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Microsoft.Build.Framework;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;namespace&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; DemoCustomTasks &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;class&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;BuildLogger&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;Since my class must inherit from Microsoft.Build.Utilities.Task, I make the following change...&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; System;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; System.IO;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Microsoft.Build.Utilities;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Microsoft.Build.Framework;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;namespace&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; DemoCustomTasks &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;class&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;BuildLogger&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; : &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Task&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;So far so good. Designing and coding our custom task is essentially the same as any other "normal" class with the exception that since we are inheriting from Microsoft.Build.Utilities.Task, we must conform to certain "inheritence rules" that we get from the base Task class. &lt;/P&gt;
&lt;P&gt;The custom task "communicates" with the build via a publicly exposed method whose signature is &lt;EM&gt;public override bool Execute(). &lt;/EM&gt;The Execute() method is derived from the base Task class and returns a boolean to the build, the build automatically uitlizes the Execute() method for the task, you don't directly call Execute() from the project file that contains build instructions, you only call the task. Logical implementation of the custom&amp;nbsp;build functionality is obtained by creating one or more methods (access should be private) that get called within the implementation of Execute(). In our code example we have a LogBuild() method whose access is private and it gets called in Execute(). Consider:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;override&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;bool&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Execute()&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; LogBuild();&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;catch&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; (&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Exception&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; ex)&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;false&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;If the LogBuild() method&amp;nbsp;fails then false gets returned to the build. If an exception is thrown then false gets returned to the build. Otherwise&amp;nbsp;the result of LogBuild() is true.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;In this example we are using a public property that the build will use to pass information to the task. We implement this property using standard class design.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;private&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;string&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; _logFileLocation = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;String&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Empty;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;[&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;RequiredAttribute&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;]&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;string&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; LogFileLocation&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;get&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; _logFileLocation;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;set&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;_logFileLocation = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;value&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-FAMILY:Courier New;"&gt;You will notice that we are decorating our property with the RequiredAttribute attribute (hee hee) that comes from Microsoft.Build.Framework. This forces the build author to set the property when executing the task.&lt;/P&gt;
&lt;P&gt;The actual code for the LogBuild() method&amp;nbsp;is not really that important, it is only there to demonstrate&amp;nbsp;creating the custom&amp;nbsp;task. It implements the logic for us to create a custom logging mechanism for our builds. (TFS logs everything about its builds, it may be useful to teams using a non-TFS version of VS??). Again, mainly for demo purposes.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;private&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Boolean&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; LogBuild()&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;bool&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; hasLoggedBuild = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;false&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:green;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;//would want to add logic to check for directory structure as well&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;if&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; (!&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;File&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Exists(LogFileLocation))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;File&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.CreateText(LogFileLocation);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;TEXT-INDENT:-27pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FileStream&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; fileStream = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;new&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FileStream&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;(LogFileLocation,&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FileMode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Append, &lt;SPAN style="COLOR:teal;"&gt;FileAccess&lt;/SPAN&gt;.Write);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;StreamWriter&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; textWriter = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;new&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;StreamWriter&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;(fileStream);&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.WriteLine(&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:maroon;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;"Build Completed @ "&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; + &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DateTime&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Now);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hasLoggedBuild = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;true&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;catch&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; (&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Exception&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; ex)&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.WriteLine(&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:maroon;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;"Logger Exception Message: "&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; + ex.Message);&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;hasLoggedBuild = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;false&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;finally&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.Close();&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.Dispose();&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; hasLoggedBuild;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;The full code for my task is below:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; System;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; System.IO;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Microsoft.Build.Utilities;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Microsoft.Build.Framework;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;namespace&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; DemoCustomTasks &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;class&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;BuildLogger&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; : &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Task&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;private&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;string&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; _logFileLocation = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;String&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Empty;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;override&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;bool&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; Execute()&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; LogBuild();&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;catch&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; (&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Exception&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; ex)&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;false&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;RequiredAttribute&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;]&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;public&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;string&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; LogFileLocation&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;get&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; _logFileLocation;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;set&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_logFileLocation = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;value&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;private&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Boolean&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; LogBuild()&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;bool&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; hasLoggedBuild = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;false&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:green;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//would want to add logic to check for directory structure as well&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;if&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; (!&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;File&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Exists(LogFileLocation))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;File&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.CreateText(LogFileLocation);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FileStream&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; fileStream = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;new&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FileStream&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;(LogFileLocation, &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FileMode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Append, &lt;SPAN style="COLOR:teal;"&gt;FileAccess&lt;/SPAN&gt;.Write);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;StreamWriter&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; textWriter = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;new&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;StreamWriter&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;(fileStream);&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.WriteLine(&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:maroon;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;"Build Completed @ "&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; + &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DateTime&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;.Now);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hasLoggedBuild = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;true&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;catch&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; (&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:teal;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Exception&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; ex)&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.WriteLine(&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:maroon;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;"Logger Exception Message: "&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; + ex.Message);&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hasLoggedBuild = &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;false&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;finally&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.Close();&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textWriter.Dispose();&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; hasLoggedBuild;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;}&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:11pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;So the key points to remember when designing, creating and implementing custom tasks are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;Create a project that is a class library.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;Reference the Microsoft.Build.Utilities and Microsoft.Build.Framework&amp;nbsp;assemblies.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;Use the referenced assemblies to implement a custom Task that inherits from Microsoft.Build.Utilities.Task.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;Create a public method called Execute() that returns boolean to the build.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;Call your implementation method from Execute();&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;Communicate from Build to&amp;nbsp;Task and from&amp;nbsp;Task to&amp;nbsp;Build using Properties.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;In the final part of this installment we will integrate our custom tasks into&amp;nbsp;our project files&amp;nbsp;to be used by MSBuild and Team Build (TFS).&amp;nbsp;We will also look at CruiseControl.Net and NAnt. Talk to you then!&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;-Kevin&lt;/P&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=91" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Application+Lifecyle+Management/default.aspx">Application Lifecyle Management</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MSBuild/default.aspx">MSBuild</category></item><item><title>Been on Vacation</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/25/been-on-vacation.aspx</link><pubDate>Thu, 25 Oct 2007 16:10:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:89</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/89.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=89</wfw:commentRss><description>Last week I was out getting some R &amp;amp; R and took some time off blogging&amp;nbsp;&amp;amp; technology in general (the only thing I used was my cell phone &lt;img src="http://vsteamsystemcentral.com/cs21/emoticons/emotion-2.gif" alt="Big Smile" /&gt;). This week has been catch up &lt;img src="http://vsteamsystemcentral.com/cs21/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;. I will have part 2 of Task Master ready soon!&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=89" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Application+Lifecyle+Management/default.aspx">Application Lifecyle Management</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MSBuild/default.aspx">MSBuild</category></item><item><title>Become a Task Master - Customizing the build process using Visual Studio</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/03/become-a-task-master-pt-1.aspx</link><pubDate>Wed, 03 Oct 2007 14:58:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:50</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/50.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=50</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;To understand the build process, we must cover a few general points:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The default Visual Studio build engine is &lt;STRONG&gt;not&lt;/STRONG&gt; MSBuild. For the purposes of this blog, when writing custom tasks we employee either MSBuild or Team Build (build engine that Visual Studio Team Foundation Server&amp;nbsp; uses). &lt;/LI&gt;
&lt;LI&gt;The build uses project files for build instructions (.csproj/.vbproj/.proj). The project file contains XML like build instructions which can be customized. MSBuild or Team Build "reads" the project file for those build instructions.&lt;/LI&gt;
&lt;LI&gt;The build file contains pre-defined &lt;EM&gt;&lt;STRONG&gt;targets&lt;/STRONG&gt;&lt;/EM&gt; to call tasks (both pre-defined and custom). You can roughly translate targets to build events. For example there is a BeforeBuild target as well as an AfterBuild target. Any guess as to when those targets "fire" during the build? Those pre-defined targets are known by MSBuild (or Team Build) as they are part of the Microsoft Build Framework. We can also create customized targets (covered later).&lt;/LI&gt;
&lt;LI&gt;We tie tasks to targets. A target can contain 1 or more tasks to execute when it is called. So you can also think of a target as a container for tasks. When BeforeBuild gets called, execute tasks x, y, and z.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;With the preliminaries covered,&amp;nbsp;will cover these items:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV&gt;Part 1 - Adding MSBuild to your Visual Studio IDE....&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Part 2 - Coding a custom task...&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Part 3 - Adding the custom task to a build...&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Additional material maybe available on &lt;A href="http://kevinisrael.com/"&gt;http://kevinisrael.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;*******This blog will cover part 1. I will blog Part 2 and 3 in the next couple of days...*******&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;1) Adding MSBuild to your Visual Studio IDE&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="IDE Tools Menu" style="WIDTH:300px;HEIGHT:488px;" height=488 alt="IDE Tools Menu" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/60/original.aspx" width=300&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Click External Tools. From the next window click Add, then type MSBuild (or whatever..its just a name that makes sense right?). Much of this is setting up environment variables to use in the build...&lt;/P&gt;
&lt;P&gt;&lt;IMG title="External Tools" style="WIDTH:397px;HEIGHT:393px;" height=393 alt="External Tools" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/61/original.aspx" width=397&gt;&lt;/P&gt;
&lt;P&gt;For the Command, Select the browse button. Browse to the MSBuild.exe file. This is typically found in C:\Windows\Microsoft\Framework\version number\&lt;/P&gt;
&lt;P&gt;&lt;IMG title="MSBuild path" style="WIDTH:601px;HEIGHT:385px;" height=385 alt="MSBuild path" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/66/original.aspx" width=601&gt;&lt;/P&gt;
&lt;P&gt;After adding the Command, we need to add Arguments. Arguments consist of Project path \ FilePath and a switch...&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Project Directory" style="WIDTH:523px;HEIGHT:506px;" height=506 alt="Project Directory" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/68/original.aspx" width=523&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Project File Name" style="WIDTH:522px;HEIGHT:505px;" height=505 alt="Project File Name" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/69/original.aspx" width=522&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Projct File Name" style="WIDTH:396px;HEIGHT:393px;" height=393 alt="Projct File Name" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/62/original.aspx" width=396&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;At this point we add a switch /v:d (verbosity is detailed). We now add the initial directory.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/64/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Make sure that you have Use Output window selected.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/67/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Click Apply. Now when you want to launch MSBuild simply go to Tools and Click MSBuild...&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Launching MSBuild" style="WIDTH:266px;HEIGHT:499px;" height=499 alt="Launching MSBuild" src="http://vsteamsystemcentral.com/cs21/photos/kevin/images/65/original.aspx" width=266&gt;&lt;/P&gt;
&lt;P&gt;Coming up on the next blog, Parts 2 and 3.&lt;/P&gt;
&lt;OL&gt;
&lt;DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Part 2 - Coding a custom task..&lt;/DIV&gt;&lt;/LI&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Part 3 - Adding the custom task to a build...&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=50" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Application+Lifecyle+Management/default.aspx">Application Lifecyle Management</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/tags/MSBuild/default.aspx">MSBuild</category></item><item><title>New Blog Site - I'm a lucky guy!</title><link>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/archive/2007/10/01/new-blog-site-i-m-a-lucky-guy.aspx</link><pubDate>Tue, 02 Oct 2007 04:19:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:41</guid><dc:creator>kevin</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/comments/41.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/kevin_israel/commentrss.aspx?PostID=41</wfw:commentRss><description>&lt;P&gt;Well all I can say is that I am a very lucky guy. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Lucky to be&amp;nbsp;passionate about 