<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Richard Murillo on Software Development : Team Foundation Server</title><link>http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx</link><description>Tags: Team Foundation Server</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Why moving work offshore fails </title><link>http://blogs.msdn.com/rimuri/archive/2007/04/20/why-moving-work-offshore-fails.aspx</link><pubDate>Fri, 20 Apr 2007 19:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2208855</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/2208855.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=2208855</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=2208855</wfw:comment><description>&lt;P&gt;Not to say that all offshore projects fail, I have both been a contributor and leader in projects that have been a great success and those that have been complete failures. Each project had its own reasons for failing and&amp;nbsp;were defined by the business (e.g. why are you sending it offshore to begin with) that typically include&amp;nbsp;cost savings, quality, increased turnaround in deliverables,&amp;nbsp;and customer satisfaction--all of which&amp;nbsp;are key drivers for moving work offshore, but in doing so there are key areas your business must pay close attention to. &lt;/P&gt;
&lt;P&gt;According to Gartner, businesses will spend more than $50 billion USD on offshore and "near-shore" outsourcing by 2007 and many projects will fail because of poor planning. Gartner also maintains that there are benefits achieved by those businesses that successfully outsource their non-core processes, however, rewards will not be instant. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reasons for Failure &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Often times, the effort and time involved in communicating with offshore team members and maintaining that relationship is underestimated. In my experiences with offshore teams to date, there has often been a lack of key items to complete awarded work effectively (like infrastructure, soft skills, planning). Additionally, coordinating between the teams requires longer hours, detailed planning, and cultural training—all of which are more expensive when working with offshore than with your own staff and can, as I have observed here, lead to lower morale and reduced deliverable output. Gartner also observes that lack of productivity in the offshore is also an issue for several reasons including high staff turnover and skill levels, especially in highly competitive markets such as Bangalore and Hyderabad, India. &lt;/P&gt;
&lt;P&gt;Much like the dot com days, new programmers coming into the field of work are inexperienced, attaining only the necessary core skills for them to receive a job in this field and often struggle with ambiguities in specification or shifting directives. As such, the teams typically do not operate with clear processes and depend on the competence and heroics of those more experienced and not on the use of proven processes. In spite of the chaos, these teams often produce usable work products; however, they frequently exceed the budget and schedule. More often than not these teams over commit, abandon any established process in times of chaos, and may not be able to repeat past successes again. &lt;/P&gt;
&lt;P&gt;What's more, senior executives are not involved to keep strategy on track and morale high—they are only in the picture when a significant escalation occurs or to sign a new deal. As I mentioned in my &lt;A class="" href="http://blogs.msdn.com/rimuri/archive/2007/04/03/outsourced-projects-on-using-visual-studio-team-system.aspx" target=_blank mce_href="http://blogs.msdn.com/rimuri/archive/2007/04/03/outsourced-projects-on-using-visual-studio-team-system.aspx"&gt;previous entry&lt;/A&gt;, in order for an offshore deal to succeed there needs to be a good level of communication between all parties. Requirements, goals, and expectations have to be defined clearly and in detail. Your onshore managers need to explain to the coordinating staff why the work has been sent offshore and what benefits are expected. &lt;/P&gt;
&lt;P&gt;More often than not, the cultural differences will come into play creating havoc for the project; classic incarnations of this include not questioning authority and just pressing forward by the offshore team. All too many times do we find out late that guidance or requirements had been ignored for cross cutting to please the schedule rather than announcing a slip. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How can Visual Studio Team System help? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Gartner advises companies that plan on offshoring work to figure out their IT process maturity and identify gaps in your process. As previously mentioned, it is important to set all expectations clearly up front with your vendor. When using Visual Studio 2005 with Team Foundation Server, several mechanisms out of box enable teams to work effectively in these environments: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Process: &lt;/STRONG&gt;out of the box, Visual Studio Team Foundation server includes &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/aa718802.aspx" mce_href="http://msdn2.microsoft.com/en-us/teamsystem/aa718802.aspx"&gt;MSF for CMMI Process Improvement Level 3&lt;/A&gt; and &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/aa718801.aspx" mce_href="http://msdn2.microsoft.com/en-us/teamsystem/aa718801.aspx"&gt;MSF for Agile Development&lt;/A&gt; work item templates. By utilizing the templates and the process behind them, teams can effectively work across physical boundaries with increased confidence and transparency, allowing software development activities to be predictable and success repeatable.&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Communication:&lt;/STRONG&gt; Visual Studio Team System facilitates the transparency between individuals and teams with work items, a shared team portal, integrated change management, and a common data repository. The availability of information, and insight into an individual's progress, creates a more unified work environment regardless of physical location. Project managers can stay informed on an individual's progress without having to visit each individual—having real time information about each individual's work and their progress allows project managers to create precise schedules and report more accurately to management&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Productivity:&lt;/STRONG&gt; utilizing the common repository, managers and leads can answer common questions such as: What's in the current build that QA can test today; are requirements being met; are my teams adhereing to quality standards; is the product ready. Further, it provides the single team portal for integrating source code, issue tracking, project plans, vision statements and others that are critical assets to a project team.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2208855" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Team Foundation Server Power Tools (tfpt) 1.2 Released</title><link>http://blogs.msdn.com/rimuri/archive/2007/02/21/team-foundation-server-power-tools-tfpt-1-2-released.aspx</link><pubDate>Wed, 21 Feb 2007 22:49:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1736965</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/1736965.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=1736965</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=1736965</wfw:comment><description>&lt;p&gt;Today the Team Foundation Server team announced the release of version 1.2 of Team Foundation Power Tools (formally known as Power Toys). What are the Power Toys you say? They're extra functionality delivered out of band for Team Foundation Server including some really useful stuff (get changes for changeset, consolidated annotation of a file, command line history, and rollback to name a few).
&lt;/p&gt;&lt;p&gt;In the latest release they have included support for Windows Vista (woo-hoo!) and several new tools:
&lt;/p&gt;&lt;p style="margin-left: 18pt"&gt;&lt;em&gt;[from announcement]
&lt;/em&gt;&lt;/p&gt;&lt;ul style="margin-left: 54pt"&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Workspace Command (tfpt.exe) &lt;/strong&gt;- Use the &lt;strong&gt;workspace&lt;/strong&gt; command for additional workspace operations not supported in the currently shipping Team Foundation Server command-line tool (&lt;strong&gt;tf.exe&lt;/strong&gt;).
&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Treeclean Command&lt;/strong&gt; - Use the &lt;strong&gt;treeclean&lt;/strong&gt; command to see and optionally delete files in the current directory and all subdirectories that are not under version control.
&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Process Template Editor&lt;/strong&gt; - A tool that provides a user interface for authoring work item types and some of the associated process template components.
&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Check-in Policy Pack&lt;/strong&gt; - A set of custom policies that address often expressed customer needs. For example, the &lt;strong&gt;Custom Path Policy&lt;/strong&gt; allows you to filter the specific items upon which another policy acts.
&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Build Test Tools Task&lt;/strong&gt; - An MSBuild task that allows you to run unit tests by specifying the DLLs  or a file name pattern in the TfsBuild.proj file instead of using .vsmdi files to specify which tests to run.&lt;span style="font-family:Times New Roman; font-size:7pt"&gt;
				&lt;/span&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;One thing that I am very excited for is the new path policy (included in the Check-In Policy Pack). This allows policies to be applied to specific paths in team foundation server (i.e. don't check for valid unit tests on a directory with 3&lt;sup&gt;rd&lt;/sup&gt; party source code). The other policy I'm excited for is the work item query policy—my project teams have several builds operating concurrently within the same team project and sometimes a private build is executed and picks up work items and associations not belonging to it specifically creating false relationships and throwing off some of our reporting.
&lt;/p&gt;&lt;p&gt;To download version 1.2, go to the Microsoft Download center at &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=7324c3db-658d-441b-8522-689c557d0a79&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=7324c3db-658d-441b-8522-689c557d0a79&amp;amp;displaylang=en&lt;/a&gt; Help for the new tools can be found on the TFPT Forums at &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=930&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=930&amp;amp;SiteID=1&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Additional information on the tools in depth can be found on &lt;a href="http://blogs.msdn.com/ukvsts/archive/2007/02/21/i-ve-got-the-power-tools.aspx"&gt;Rich's Developer Tools Blog&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1736965" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>Getting my Sandcastle Team Build targets file to work with Sandcastle September CTP</title><link>http://blogs.msdn.com/rimuri/archive/2006/10/31/getting-my-sandcastle-team-build-targets-file-to-work-with-sandcastle-september-ctp.aspx</link><pubDate>Tue, 31 Oct 2006 20:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:913459</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/913459.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=913459</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=913459</wfw:comment><description>&lt;P&gt;A few things before we get started: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;You will need the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp"&gt;HTML Help Workshop installed&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en"&gt;September CTP of Sandcastle&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;My September CTP Sandcastle Targets File (attached)&lt;BR&gt;This file needs to be copied to your %programfiles%\MSBuild directory &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Next you will need to make some modifications to the standard configuration file (I am using the VS2005 style) &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Make a copy of %programfiles%\Sandcastle\Presentation\vs2005\configuration\sandcastle.config &lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Change references of &lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;..\..\ to %programfiles%\sandcastle\ &lt;/LI&gt;
&lt;LI&gt;..\cpref_reflection to %programfiles%\sandcastle\examples\cpref_reflection &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Update your TFSBuild.proj to include the following: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Add a new Import tag referencing the sandcastle targets file &lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Add a new target called DocumentCLR&lt;BR&gt;&amp;lt;Target Name="DocumentCLR"&amp;gt;&lt;BR&gt;&amp;lt;CallTarget Targets="SandcastleDocument" ContinueOnError="false" /&amp;gt; &lt;BR&gt;&amp;lt;MakeDir Condition="!Exists('$(BinariesRoot)\Documentation')" Directories="$(BinariesRoot)\Documentation" ContinueOnError="false" /&amp;gt;&lt;BR&gt;&amp;lt;Copy SourceFiles="$(SandcastleWorkingDirectory)\Output\$(SandcastleDocumentationName).chm" DestinationFiles="$(BinariesRoot)\Documentation\$(SandcastleDocumentationName).chm" ContinueOnError="false"/&amp;gt;&lt;BR&gt;&amp;lt;/Target&amp;gt; &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;Add an additional target that overrides the AfterCompile target&lt;BR&gt;&amp;lt;Target Name="AfterCompile"&amp;gt;&lt;BR&gt;&amp;lt;CallTarget RunEachTargetSeparately="true" Targets="DocumentCLR" ContinueOnError="false"/&amp;gt;&lt;BR&gt;&amp;lt;OnError ExecuteTargets=" OnBuildBreak;"/&amp;gt;&lt;BR&gt;&amp;lt;/Target&amp;gt; &lt;/LI&gt;
&lt;LI&gt;Update your TFSBuild.rsp file to include some configuration&lt;BR&gt;/p:SandcastleDocumentationName=NameOfYourCHM&lt;BR&gt;/p:SandcastleConfiguration="C:\Path_TO_MODIFIED_CONFIG\sandcastle.config"&lt;BR&gt;/p:SandcastleDocumentationOutput=$(BinariesRoot)\Documentation&lt;BR&gt;/p:SandcastleDependencies="%windir%\Microsoft.NET\Framework\v2.0.50727\*.dll,\\lcabuildvm01\3rdParty\Dependencies\*.dll,%windir%\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.UnitTestFramework\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"&lt;BR&gt;/p:SandcastleHelpGeneration=CHM&lt;/LI&gt;&lt;/OL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=913459" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/rimuri/attachment/913459.ashx" length="5218" type="application/octet-stream" /><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>Reusable MSBuild Sandcastle Targets File</title><link>http://blogs.msdn.com/rimuri/archive/2006/10/30/reusable-msbuild-sandcastle-targets-file.aspx</link><pubDate>Tue, 31 Oct 2006 03:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:905088</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/905088.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=905088</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=905088</wfw:comment><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'"&gt;Based on a past post, I have an external targets file you can place in your $(MSBuildExtensionsPath) folder (attached in zip).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;You can call it like this:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;Import&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;Project&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;$(MSBuildExtensionsPath)\Sandcastle.targets&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&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: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;Target&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;AfterCompile&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;CallTarget&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;RunEachTargetSeparately&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Targets&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;DocumentCLR&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ContinueOnError&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;OnError&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;ExecuteTargets&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;OnBuildBreak;&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;Target&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;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: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;Target&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;DocumentCLR&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;CallTarget&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;Targets&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;SandcastleDocument&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ContinueOnError&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;MakeDir&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;Condition&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;!Exists('$(BinariesRoot)\Documentation')&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Directories&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;$(BinariesRoot)\Documentation&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ContinueOnError&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;Copy&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas"&gt;SourceFiles&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;"&lt;SPAN style="COLOR: blue"&gt;$(SandcastleWorkingDirectory)\Output\$(SandcastleDocumentationName).chm&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DestinationFiles&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;$(BinariesRoot)\Documentation\$(SandcastleDocumentationName).chm&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ContinueOnError&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Consolas"&gt;Target&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&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="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&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;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The following is configuration from my msbuild response file:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas"&gt;/p:SandcastleDocumentationName=MyProjectDocumentation&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: 10pt; FONT-FAMILY: Consolas"&gt;/p:SandcastleConfiguration=C:\YOUR\CONFIG\sandcastle.config&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: 10pt; FONT-FAMILY: Consolas"&gt;/p:SandcastleDocumentationOutput=$(BinariesRoot)\Documentation&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: 10pt; FONT-FAMILY: Consolas"&gt;/p:SandcastleDependencies="%windir%\Microsoft.NET\Framework\v2.0.50727\*.dll,C:\YOUR\Dependencies\*.dll,%windir%\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.UnitTestFramework\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"&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: 10pt; FONT-FAMILY: Consolas"&gt;/p:SandcastleHelpGeneration=CHM&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: 10pt; FONT-FAMILY: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'"&gt;Note: tested with build 2.0.2426.28539&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=905088" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/rimuri/attachment/905088.ashx" length="1269" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Using Sandcastle August CTP and MSBuild to produce CHM documentation automatically</title><link>http://blogs.msdn.com/rimuri/archive/2006/09/29/777637.aspx</link><pubDate>Sat, 30 Sep 2006 03:44:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:777637</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/777637.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=777637</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=777637</wfw:comment><description>&lt;p&gt;First, we created a cmd file to do the build for us. Syntax for calling the file is Build.cmd "PathToBinaries" "Name of the documentation" (more on this later)
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;@echo off
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;PUSHD %1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programfiles%\Sandcastle\ProductionTools\mrefbuilder.exe" *.dll /out:%~dp0\reflection.org /dep:%windir%\Microsoft.NET\Framework\v2.0.50727\*.dll,C:\deps\*.dll,%WINDIR%\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.UnitTestFramework\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;POPD
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programFiles%\Sandcastle\ProductionTools\XslTransform.exe" /xsl:"%programfiles%\Sandcastle\ProductionTransforms\AddOverloads.xsl" /xsl:"%programfiles%\Sandcastle\ProductionTransforms\AddGuidFilenames.xsl" reflection.org /out:reflection.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programFiles%\Sandcastle\ProductionTools\XslTransform.exe" /xsl:"%programfiles%\Sandcastle\ProductionTransforms\ReflectionToManifest.xsl" reflection.xml /out:manifest.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;if not exist Output mkdir Output&lt;br/&gt;if not exist Output\html mkdir Output\html&lt;br/&gt;if not exist Output\art mkdir Output\art&lt;br/&gt;if not exist Output\scripts mkdir Output\scripts&lt;br/&gt;if not exist Output\styles mkdir Output\styles&lt;br/&gt;copy "%programfiles%\Sandcastle\Presentation\art\*" Output\art &amp;gt; NUL&lt;br/&gt;copy "%programfiles%\Sandcastle\Presentation\scripts\*" Output\scripts &amp;gt; NUL&lt;br/&gt;copy "%programfiles%\Sandcastle\Presentation\styles\*" Output\styles &amp;gt; NUL
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programfiles%\Sandcastle\ProductionTools\BuildAssembler.exe" /config:sandcastle.config manifest.xml&lt;br/&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programFiles%\Sandcastle\ProductionTools\XslTransform.exe" /xsl:"%programfiles%\Sandcastle\ProductionTransforms\ReflectionToChmProject.xsl" reflection.xml /out:Output\%2.hhp
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programFiles%\Sandcastle\ProductionTools\XslTransform.exe" /xsl:"%programfiles%\Sandcastle\ProductionTransforms\ReflectionToChmContents.xsl" reflection.xml /arg:html=Output\html /out:Output\%2.hhc
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programFiles%\Sandcastle\ProductionTools\XslTransform.exe" /xsl:"%programfiles%\Sandcastle\ProductionTransforms\ReflectionToChmIndex.xsl" reflection.xml /out:Output\%2.hhk
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;IF ERRORLEVEL 1 EXIT /B 1
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;CD OUTPUT
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;"%programfiles%\HTML Help Workshop\hhc.exe" %2.hhp
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;CD ..
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;There is also a configuration file we're using referenced in our call to BuildAssembler.exe; here is that
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;  &amp;lt;dduetools&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;builder&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;components&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;!-- Create skeleton document --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;data file="%programfiles%\Sandcastle\Presentation\transforms\skeleton.xml" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;copy source="/*" target="/" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;!-- Copy in reflection data --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;index name="reflection" value="/reflection/apis/api" key="@id" cache="10"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;            &amp;lt;data files="reflection.xml" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;/index&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;copy name="reflection" source="*" target="/document/reference" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- Copy in container data --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;copy name="reflection" key="string(/document/reference/containers/container/@namespace)" source="*[not(local-name()='elements')]" target="/document/reference/containers/container[@namespace]" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;copy name="reflection" key="string(/document/reference/containers/container/@type)" source="*[not(local-name()='elements')]" target="/document/reference/containers/container[@type]" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;    
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- Generate syntax --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;then&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;syntax input="/document/reference" output="/document/syntax" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;generators&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;              &amp;lt;generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\SyntaxGenerators.dll" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;              &amp;lt;generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\SyntaxGenerators.dll" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;              &amp;lt;generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\SyntaxGenerators.dll" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;            &amp;lt;/generators&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;/then&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- Copy in comments --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;index name="comments" value="/doc/members/member" key="@name" cache="100"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;            &amp;lt;data files="Documentation\*.xml" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;/index&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;copy name="comments" source="*" target="/document/comments" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- Copy in reflection data and comments for members --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;variable expression="/document/reference/elements/element/@api" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;components&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;            &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;copy name="reflection" source="*[not(local-name()='elements')]" target="/document/reference/elements/element[@api=$key]" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;            &amp;lt;component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;              &amp;lt;copy name="comments" source="summary" target="/document/reference/elements/element[@api=$key]" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;            &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;/components&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- transform --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;transform file="%programfiles%\Sandcastle\Presentation\transforms\main_sandcastle.xsl" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- resolve shared content --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;content file="%programfiles%\Sandcastle\Presentation\content\shared_content.xml" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;content file="%programfiles%\Sandcastle\Presentation\content\reference_content.xml" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- resolve reference links --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;targets files="reflection.xml" type="local" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- save the result --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%programfiles%\Sandcastle\ProductionTools\BuildComponents\BuildComponents.dll"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;          &amp;lt;save path="concat('Output\html\',/html/head/meta[@name='guid']/@content,'.htm')" indent="false" omit-xml-declaration="true" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;/component&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;/components&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/builder&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;  &amp;lt;/dduetools&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;/configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Now we have to hook it up to MSBuild. Within the TFSProj.proj file, a new target was created called by an override to the Team Build AfterDrop target
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;PropertyGroup&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;SandcastleDocumentDirectory&amp;gt;$(TEMP)\SandcastleDocument&amp;lt;/SandcastleDocumentDirectory&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;/PropertyGroup&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;Target Name="SandcastleDocument"&amp;gt;    
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;CreateProperty Value="MyDocumentation"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;Output TaskParameter="Value" PropertyName="SandcastleDocumentationName"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/CreateProperty&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;RemoveDir Condition="Exists('$(SandcastleDocumentDirectory)')" Directories="$(SandcastleDocumentDirectory)" ContinueOnError="false"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;MakeDir Directories="$(SandcastleDocumentDirectory)" ContinueOnError="false" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;CreateItem Include="$(SolutionRoot)\Sandcastle\Aug 2006 CTP\Build.cmd"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;Output ItemName="SandcastleBuildScript" TaskParameter="Include"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/CreateItem&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;Copy SourceFiles="@(SandcastleBuildScript)" DestinationFiles="@(SandcastleBuildScript -&amp;gt; '$(SandcastleDocumentDirectory)\Build.cmd')" ContinueOnError="false" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;    
 &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;CreateItem Include="$(SolutionRoot)\Sandcastle\Aug 2006 CTP\sandcastle.config"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;Output ItemName="SandcastleConfiguration" TaskParameter="Include"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/CreateItem&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;Copy SourceFiles="@(SandcastleConfiguration)" DestinationFiles="@(SandcastleConfiguration -&amp;gt; '$(SandcastleDocumentDirectory)\sandcastle.config')" ContinueOnError="false" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;MakeDir Directories="$(SandcastleDocumentDirectory)\Documentation" ContinueOnError="false"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;CreateItem Include="$(BinariesRoot)\x86\Debug\*.xml"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;Output ItemName="CodeDocumentationFiles" TaskParameter="Include"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/CreateItem&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;Copy SourceFiles="@(CodeDocumentationFiles)" DestinationFiles="@(CodeDocumentationFiles -&amp;gt; '$(SandcastleDocumentDirectory)\Documentation\%(Filename)%(Extension)')" ContinueOnError="false"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;Exec WorkingDirectory="$(SandcastleDocumentDirectory)" Command="Build.cmd &amp;amp;quot;$(BinariesRoot)\x86\Debug&amp;amp;quot; $(SandcastleDocumentationName)" ContinueOnError="false" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;CreateItem Include="$(SandcastleDocumentDirectory)\output\$(SandcastleDocumentationName).chm" ContinueOnError="false"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;      &amp;lt;Output ItemName="SandcastleDocumentationFiles" TaskParameter="Include"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;/CreateItem&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;MakeDir Condition="!Exists('$(BinariesRoot)\Documentation')" Directories="$(BinariesRoot)\Documentation" ContinueOnError="false" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;Copy SourceFiles="@(SandcastleDocumentationFiles)" DestinationFiles="@(SandcastleDocumentationFiles -&amp;gt; '$(BinariesRoot)\Documentation\%(RecursiveDir)%(Filename)%(Extension)')" ContinueOnError="false" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    &amp;lt;OnError ExecuteTargets="OnBuildBreak;"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;  &amp;lt;/Target&amp;gt;  &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=777637" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>I'm on Channel9!</title><link>http://blogs.msdn.com/rimuri/archive/2006/07/26/VisualStudioTeamSystemMicrosoftIT.aspx</link><pubDate>Thu, 27 Jul 2006 00:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:679511</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/679511.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=679511</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=679511</wfw:comment><description>&lt;P&gt;Yay!&lt;/P&gt;
&lt;P&gt;I'm on the front page of &lt;A href="http://channel9.msdn.com"&gt;Channel9&lt;/A&gt;&amp;nbsp;with an interview about using Visual Studio Team System in MSIT's Legal group.&lt;/P&gt;
&lt;P&gt;Full link for your reference: &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://channel9.msdn.com/showpost.aspx?postid=220125"&gt;http://channel9.msdn.com/showpost.aspx?postid=220125&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=679511" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Key Design Scenarios with Visual Studio Team System and Team Foundation Server - System, Application, Resource Reuse</title><link>http://blogs.msdn.com/rimuri/archive/2006/05/02/584404.aspx</link><pubDate>Tue, 02 May 2006 21:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:584404</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/584404.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=584404</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=584404</wfw:comment><description>&lt;DIV align=left&gt;In order to effectively execute an IT strategy a&amp;nbsp;roadmap must be created to&amp;nbsp;contain and identify what common areas exist for the business' solution that could be leveraged by other systems in the enterprise or organization; or which capabilities the solution can leverage. &lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;Typically architects will draw their solution design on a whiteboard, and link dependant systems that way. The key problem with that is there are a number of settings and data that are required on each node that can't easily be placed on the whiteboard. In Visual Studio 2005 Architect and Team Suite SKUs architects can go beyond the whiteboard and use the distributed system diagramming tool&amp;nbsp;in Visual Studio 2005.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;IMG title="DSL With Team Architect" style="WIDTH: 727px; HEIGHT: 407px" tabIndex=-1 height=406 alt="" src="http://rjm.ath.cx/DistSystem.JPG" width=727&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;From this diagram the architect can update how the distributed systems are defined in a solution. Opportunities for reuse can be identified and the overall distributed system architecture can be changed quickly and easily. Then, after baseline,&amp;nbsp;the architect can have Visual Studio 2005 build the stubs for these services and applications with definitions and attributes set at this aggregate level. The diagram also serves as documentation for technical requirements and can be updated after the solution is though with development to represent as-built.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;The key idea in all of this is we begin with the end in mind and developing our IT solution to business needs. We can use these diagrams to form views of our solution--other views available in VSTS include the system designer (a drill down into each node above), class designer (a further drill down into a visual view of the code in a system), the logical datacenter designer (provides a visual representation of the desired deployment locations), and the deployment designer (creates entire deployment plan).&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;As I mentioned before, it is imperative that architects identify where existing systems or their own systems could be re-used by other areas of the business to reduce cost and improve ROI. The solution design, application design, and web service endpoint design are all key to determine what resources are available and which are needed and ultimately act as inputs to those components design or re-design to suite a more generic purpose.&lt;/DIV&gt;
&lt;DIV id=CSBloggerSig&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=584404" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Visual Studio Team Foundation Server Feature Requests</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/28/584461.aspx</link><pubDate>Fri, 28 Apr 2006 10:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:584461</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/584461.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=584461</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=584461</wfw:comment><description>&lt;DIV&gt;I find it difficult to manage many Shared Queries in the work item tracker of VSTF. Sometimes I want to save my ad-hoc query for distribution to a small set of people (maybe just a peer even), but find no way to really make that easy except for sharing the query with the entire team. Even there, you could have hundreds of queries with no real way to group them, so you have to get creative with the naming.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Scenario: I am in a meeting and I need to quickly query WIT to respond to a question. If I do not have an instance of Visual Studio running on my laptop, I would need to start one up (alternate: MSTSC in to my primary development workstation and open a new VSTS instance there) and wait for it to connect to VSTF. Then I would need to hunt down the query, or create a new query based on the criteria, then wait for the results. After I get my results and present them verbally, Bob, a peer developer, also wants to see the results and other various details that I didn't explicitly communicate in my answer. I would have to save my query as a shared query and give him the name so he could hunt it down.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Features I want:&lt;/DIV&gt;
&lt;OL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=1 NDListNewStart="true"&gt;
&lt;LI&gt;An easy way to share WIQL queries with team members as an external file that can be executed by anyone that has read access to the team foundation server. 
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc NDListNewStart="true"&gt;
&lt;LI&gt;Value Propositions 
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc NDListNewStart="true"&gt;
&lt;LI&gt;Queries can be shared easily with users who do not actively watch a VSTF WIT database 
&lt;LI&gt;Queries can be stored outside of VSTF (email, SharePoint, etc.)&lt;BR&gt;&lt;EM&gt;Update: this is possible in a limited fashion and is hidden away. When creating a VSTS query, you can File -&amp;gt; Save As... to save it as a file directly. You cannot, however, export an existing query directly to a file. You must open the query, modify it, change it back to the way it was (i.e. add a clause then remove it) then do a File -&amp;gt; Safe As... and save it as a file.&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;A way to organize the work item queries into folders and, for shared queries,&amp;nbsp;adjust permissions on a folder level based on TFS or Windows security group &lt;/LI&gt;
&lt;LI&gt;
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc NDListNewStart="true"&gt;
&lt;LI&gt;Value Propositions: 
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc NDListNewStart="true"&gt;
&lt;LI&gt;Enhanced organization allows users to find relevant information quickly 
&lt;LI&gt;Security lock down can prevent unauthorized editing of a query (i.e. only the triage team can create, update, or delete triage queries)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Functionality to search by query name, creator, last updated, etc. 
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc NDListNewStart="true"&gt;
&lt;LI&gt;Value Proposition: 
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc NDListNewStart="true"&gt;
&lt;LI&gt;If my team instance has many WIT folders or queries I may need to locate a query quickly and easily 
&lt;LI&gt;May wish to check for duplicate query name or search for a query that already has similar functionality that I can copy then modify for my purposes (find query from last release containing known issues and copy that to a new query so I can change the version, etc. for a new known issues query).&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Goals:&lt;/DIV&gt;
&lt;OL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=1&gt;
&lt;LI&gt;Users can update existing VSTF, or create new VSTF instances and/or installations without breaking changes&lt;/LI&gt;&lt;/OL&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;IMHO if we coupled this with a &lt;A HREF="/rimuri/archive/2006/03/07/544990.aspx"&gt;command line tool &lt;/A&gt;that I previously proposed some users would not need&amp;nbsp;Visual Studio or Office&amp;nbsp;at all to manage the queries which would be nice.&lt;/DIV&gt;
&lt;DIV id=CSBloggerSig&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;gh9zRYb9z3NLEeu&lt;/DIV&gt;&lt;!-- gh9zRYb9z3NLEeu --&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=584461" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Key Design Scenarios with Visual Studio Team System and Team Foundation Server</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/26/584403.aspx</link><pubDate>Wed, 26 Apr 2006 21:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:584403</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/584403.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=584403</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=584403</wfw:comment><description>&lt;div&gt;First I want to start out with some observations:&lt;/div&gt;
&lt;ol style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type="1" NDListNewStart="true"&gt;&lt;li&gt;The Business expects IT to provide a technology advantage with the right capabilities at the right price at the right time&lt;/li&gt;&lt;li&gt;A business strategy alone is not sufficient for IT planning&lt;/li&gt;&lt;ol style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type="1" NDListNewStart="true"&gt;&lt;li&gt;Business rarely asks for IT infrastructure capabilities&lt;/li&gt;&lt;ol style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type="1" NDListNewStart="true"&gt;&lt;li&gt;Every business capability is highly dependant on the IT infrastructure&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;It is difficult to make a business case without a strategy except when there is obvious pain&lt;/li&gt;&lt;/ol&gt;&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Given that state of things most solutions are reactive and the solutions that are delivered are often tightly coupled with a business process so other processes that require similar functionality will either have to copy/paste code or build it themselves--either way it's a losing battle; we are shooting ourselves in the foot by driving up maintenance costs and reducing ROI. Then when something goes wrong we act--the entire notion of reactive maintenance and augmentation is an issue itself and this is where architecture planning and the new visualization tools of VSTS come into play.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;A few of the key concepts to architecture planning revolve around clarity of business needs and IT objectives. However, more importantly IT needs to &lt;strong&gt;anticipate&lt;/strong&gt; business needs to meet expectations (right solution, for the right price, at the right time). To do this we must understand our objectives and best practices to help us choose the right approach (direction and design patterns).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;To understand and anticipate business needs we need to identify what capabilities the business might need for various aspects of conducting their business. Next we need to answer several key questions about those needs:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type="disc"&gt;&lt;li&gt;For each capability what will change over time?&lt;/li&gt;&lt;ul style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type="disc"&gt;&lt;li&gt;Who&lt;/li&gt;&lt;li&gt;Where&lt;/li&gt;&lt;li&gt;What&lt;/li&gt;&lt;li&gt;When&lt;/li&gt;&lt;li&gt;How&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Once we understand what the business needs, we can create an IT roadmap for those needs, identifying success factors, objectives, and design principles. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In the future I will publish a series of posts around the following key design scenarios:&lt;/div&gt;
&lt;ul style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type="disc"&gt;&lt;li&gt;&lt;div align="left"&gt;Contract-first design&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Scenario-driven design&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Business process-driven design&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Framework design&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;System, application, resource reuse&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Requirements Traceability&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Design patterns, guidance, prescriptive architecture&lt;/div&gt;
&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Cross-lifecycle and Team Collaboration&lt;/div&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;div id="CSBloggerSig"&gt;&lt;/div&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=584403" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Strategic Architecture solutions are a way of thinking</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/21/580935.aspx</link><pubDate>Sat, 22 Apr 2006 01:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:580935</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/580935.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=580935</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=580935</wfw:comment><description>&lt;DIV&gt;Expanding on my &lt;A HREF="/rimuri/archive/2006/04/19/579322.aspx"&gt;previous post on accountability&lt;/A&gt;, fostering alignment across the enterprise is really driven from multiple angles: market opportunity, technology opportunity, capability and business operations--all which create a business strategy. In that are 5 main tenets: effectiveness, competitiveness, agility, accountability, and efficiency.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;One of the key objectives of Visual Studio Team Foundation server is to create an environment where teams can collaborate and leverage past experience;&amp;nbsp;this&amp;nbsp;is where I think the real value of IT lies. A key item I have begun to include in my documents is that we should have multiple value propositions for each objective--a value proposition from the business and one from IT. VSTF allows us to foster collaboration and create value, but we still have to measure&amp;nbsp;the effectiveness in translating business vision and strategy. Enter &lt;A href="http://www.balancedscorecard.org/"&gt;Balanced Score Cards&lt;/A&gt;.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;BSCs are about clarity and turning vision and strategy into action and providing feedback on those actions. Most importantly, BSCs are more than just about profit and cost reduction, which is great, but only a segment of issues. BSCs allow for balance:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="PADDING-LEFT: 50px"&gt;"The balanced scorecard retains traditional financial measures. But financial measures tell the story of past events, an adequate story for industrial age companies for which investments in long-term capabilities and customer relationships were not critical for success. These financial measures are inadequate, however, for guiding and evaluating the journey that information age companies must make to create future value through investment in customers, suppliers, employees, processes, technology, and innovation."&lt;/DIV&gt;
&lt;DIV style="PADDING-LEFT: 50px"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Every project has basic elements that can be used by BSCs: customers, budget, learning opportunities and growth, customer satisfaction, etc. and as such, architecture should be mapped to those elements. Visual Studio Team System Architect and Team Suite SKUs include some great visualization tools to provide a visual element to our complex systems,&amp;nbsp;such as a datacenter view and code entity relationships. &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;In order for projects and feature teams to collaborate effectively, first they must identify which goals are shared. Those goals must then be mapped back to business strategy in a way that provides clarity. Since most human beings are visually oriented, the addition of visual views of our systems allow us to quickly and succulently (a picture is worth a thousand words) describe and recognize reusable technical areas. However,&amp;nbsp;in order to successfully provide shared systems or components, one must leverage standards that exist (global, industry, team, project, etc.),&amp;nbsp;focus on key integration requirements,&amp;nbsp;as well as use&amp;nbsp;extensibility models and OOP techniques to handle special cases. This ensures that components are developed against a clear set of goals that is transparent to everyone. Other projects&amp;nbsp;then can use these views, which can be exported as images, to identify if and where the components or services provide value to their objectives during their envisioning and planning phases.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;As we shift into this kind of thinking we are placing more and more emphasis on process, that is, creating deliverables consistently and reliably whether it's a process to support the application, a business-oriented process (such as a human to human workflow), or strategic planning. There are several key areas we can focus on to improve process efficiency such as having a managed workflow, minimal variation in our processes, or stakeholder/participant insight. &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;One key item to realize when thinking about how this architecture decision could be useful in the future is to be aware that future changes should not hurt. This can be done through encapsulation which then allow improvements to be implemented with little overall pain to the service or component itself and to other applications that are dependent on it.&amp;nbsp;It is&amp;nbsp;through encapsulation that you can standardize how instances of your process, component, system, service,&amp;nbsp;etc. &amp;nbsp;are created or invoked, and automatically test normalized user scenarios to provide quality and consistency. With these scenarios you can derive values for various metrics, such as performance, which are reflected in the BSC.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="PADDING-LEFT: 50px"&gt;Example&lt;/DIV&gt;
&lt;DIV style="PADDING-LEFT: 50px"&gt;You analyze a high priority user scenario and see that in the workflow there are a number of calls to your web service that reduce the responsiveness of the calling application due to the overhead of running the HTTP request and parsing the response. You then optimize this scenario by reducing the amount of fine grained calls to your service by providing a coarse grained interface to be used by calling applications.&lt;/DIV&gt;
&lt;DIV style="PADDING-LEFT: 50px"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;As teams adopt these practices the organization drives toward excellence by implementing consistent best practices, optimizing return on investments (ROI), and&amp;nbsp;increasing communication by collaborating, which is&amp;nbsp;eased by a consistent context for exchange of information. The dependency of another application to your own &lt;A HREF="/rimuri/archive/2006/04/19/579322.aspx"&gt;forces quality up&lt;/A&gt;&amp;nbsp;and dissolves team indifference.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;Key Take-Aways&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;Shared components and services significantly improve communication and alignment with business objectives&lt;/EM&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc&gt;
&lt;LI&gt;In order to drive the need for dependency on a component, it must clearly communicate its value propositions and be integral to the value chain of another project
&lt;LI&gt;To maintain order, policies must be enforced
&lt;LI&gt;Each component or service has value and associated cost which can be measured using a Balanced Score Card
&lt;LI&gt;Each component or service can be in-sourced, outsourced, and multi-sourced
&lt;LI&gt;The encapsulation of business capabilities promotes
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc&gt;
&lt;LI&gt;continuous improvement
&lt;LI&gt;flexible souring choices
&lt;LI&gt;teaches an organization about itself&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV id=CSBloggerSig&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=580935" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/rimuri/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Driving Accountability with VSTF</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/19/579322.aspx</link><pubDate>Wed, 19 Apr 2006 23:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:579322</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/579322.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=579322</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=579322</wfw:comment><description>&lt;DIV align=left&gt;I used to work with a developer, an agile methodology evangelist, who would often tell me stories about agile methodologies applied to industries other than information technology. In a specific instance,&amp;nbsp;I&amp;nbsp;recall him telling me a story about a Japanese auto factory that implemented the &lt;A href="http://www.isixsigma.com/me/lean_manufacturing/"&gt;LEAN &lt;/A&gt;methodology for manufacturing. &lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;Basically the story was that anyone in the factory could stop the production line if they found an issue.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;An interesting concept indeed. Today I read another article about Japanese Auto Production plant that only kept a few spare parts for issues encountered on the production line. If the production line ran out of spare parts, the entire line was shut down while new parts were ordered.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;This idea drives an interesting behavior: no one single person wakes up in the morning and aspires to shut down the production line. In the automobile manufacturing plant it turns out that the vendors supplying the parts also did not want to be in the position of halting all production in the plant, so they simply shipped higher quality parts because higher quality was expected from them (this is known as the&amp;nbsp;&lt;A title="Pygmalion effect" href="http://en.wikipedia.org/wiki/Pygmalion_effect"&gt;Pygmalion effect&lt;/A&gt;)&amp;nbsp;and they know they would be held accountable.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;One thing I have been doing recently at Microsoft is driving collaboration with Visual Studio Team Foundation server and helping spot issues with our developing products by integrating components more frequently and regularly. This provides a shorter feedback loop where we can address the issues sooner, rather than waiting until a big quality push at the end of the project, running out of time, and having to solve the issues with a service release.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;The integration portions for VSTF come right out of the box--static code analysis to ensure a base level of code quality, automated builds with team build, greatly enhanced branching and merging capabilities to allow teams with multiple features to integrate frequently without being detrimental to the overall project progress, work item and issue tracking, et al.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;In the not too distant future I will be posting more information regarding the business value of VSTS and VSTF (following my premier on &lt;A href="http://channel9.msdn.com/"&gt;Channel9&lt;/A&gt;) and what mindset changes need to occur to get the most value out of these great new tools that have shipped.&lt;/DIV&gt;
&lt;DIV id=CSBloggerSig&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=579322" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>Visual Studio Team Foundation Server MSSCCI Provider</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/11/573545.aspx</link><pubDate>Tue, 11 Apr 2006 20:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:573545</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/573545.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=573545</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=573545</wfw:comment><description>&lt;P&gt;Version 1.0 of the Visual Studio Team Foundation Server MSSCCI Provider has been &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=32202966-ef04-442f-8c5c-88bdf15f551c&amp;amp;displaylang=en"&gt;released to the web&lt;/A&gt;! This is very exciting for me--the MSSCCI provider allows the integrated use of the new version control system available in Team Foundation Server from products that did not support it OOB such as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Visual Studio .NET 2003&lt;/LI&gt;
&lt;LI&gt;Visual Basic 6 (SP6 required)&lt;/LI&gt;
&lt;LI&gt;SQL Server Management Studio (SSMS)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;An issue arises with the new MSSCCI provider though--having multiple providers installed on your development machine at once. For example, other devs on my team still use VSS 6.0 for our legacy systems, but now they can begin to migrate the sources over to the new source control system. But managing multiple MSSCCI providers can be a bit tricky. &lt;A HREF="/edhintz/archive/2006/04/10/572826.aspx"&gt;Ed Hintz posted an entry on his blog about dealing with multiple MSSCCI providers and switching between the two&lt;/A&gt;. Essentially you can run the following commands to switch easily back and forth in your environments:&lt;/P&gt;
&lt;P&gt;From Ed Hintz's entry:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;[The] following command line command will set the provider to SourceSafe.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black"&gt;reg add HKLM\Software\SourceCodeControlProvider /v ProviderRegKey /d Software\Microsoft\SourceSafe /f&lt;/SPAN&gt;&lt;/CODE&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black"&gt;Likewise, the following command will set the provider to TFS.&lt;/SPAN&gt;&lt;/CODE&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 7.5pt 0in"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black"&gt;reg add HKLM\Software\SourceCodeControlProvider /v ProviderRegKey /d "Software\Microsoft\Team Foundation Server MSSCCI Provider" /f&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If you want to migrate from VSS 6.0 to VSTFS Source management then you would have used the VSSConverter command line utility. &lt;A HREF="/robcaron/archive/2006/04/05/569602.aspx"&gt;Rob Caron has posted an entry on his blog that a 3rd party has created a GUI for the utility to simplify the migration&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=573545" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>Improving Team Foundation Server performance</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/06/564521.aspx</link><pubDate>Fri, 07 Apr 2006 04:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:564521</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/564521.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=564521</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=564521</wfw:comment><description>&lt;p&gt;Buck Hodges has a post in his blog outlining various tips for improving performance on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifying LAN settings are correct&lt;/li&gt;
&lt;li&gt;Not running tf.exe on the app tier&lt;/li&gt;
&lt;li&gt;Batching TF.exe requests in a command file&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href="/buckh/archive/2005/12/12/503015.aspx"&gt;http://blogs.msdn.com/buckh/archive/2005/12/12/503015.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tim Noonan has also provided some other registry tweaks to improve performance within the IDE&lt;br/&gt;&lt;a href="/hippietim/archive/2006/03/14/551320.aspx"&gt;http://blogs.msdn.com/hippietim/archive/2006/03/14/551320.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a title="blocked::http://blogs.msdn.com/buckh/archive/2006/03/14/vs_registry.aspx" href="/buckh/archive/2006/03/14/vs_registry.aspx" target="_top"&gt;http://blogs.msdn.com/buckh/archive/2006/03/14/vs_registry.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=564521" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>The Differences between TFS Trial and RTM</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/05/569384.aspx</link><pubDate>Thu, 06 Apr 2006 01:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:569384</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/569384.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=569384</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=569384</wfw:comment><description>&lt;DIV&gt;&lt;A href="/rimuri/archive/2006/03/30/564497.aspx#568210"&gt;I received a comment on my blog &lt;/A&gt;asking about the differences between TFS Trial and RTM. Here are some highlights:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;UL style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" type=disc&gt;
&lt;LI&gt;Bits are 99.99% identical
&lt;LI&gt;Trial has the same process guidance version of MSF (4.0), however, there are some known issues that exist with broken links in the Trial version of TFS (KB articles to be posted along with a patch to fix the issue) 
&lt;LI&gt;Trial version expires after 180 days 
&lt;LI&gt;You can upgrade the Trail to Retail though the setup UI 
&lt;LI&gt;Only those covered under the MSDN Universal/Premium solutions have access to the Trial version and Workgroup Edition&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If you wish to purchase TFS you can do that with Microsoft directly with a Volume Licensing Agreement (&lt;A href="http://www.microsoft.com/licensing/resources/default.mspx"&gt;http://www.microsoft.com/licensing/resources/default.mspx&lt;/A&gt;) or directly from a reseller.&lt;/P&gt;
&lt;P&gt;Additional information about RTM and purchasing FPP or VLA editions can be found on Eric Lee's blog "&lt;A HREF="/ericlee/archive/2006/03/22/558249.aspx"&gt;Why can't I buy Team Foundation Server right now?"&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=569384" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>Some Helpful Visual Studio Team System and Team Foundation Server books</title><link>http://blogs.msdn.com/rimuri/archive/2006/04/03/564517.aspx</link><pubDate>Mon, 03 Apr 2006 07:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:564517</guid><dc:creator>Richard Murillo</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/rimuri/comments/564517.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rimuri/commentrss.aspx?PostID=564517</wfw:commentRss><wfw:comment>http://blogs.msdn.com/rimuri/rsscomments.aspx?PostID=564517</wfw:comment><description>&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://www.amazon.com/gp/product/0321278720/sr=8-1/qid=1143695330/ref=pd_bbs_1/104-2572326-4455121?%5Fencoding=UTF8"&gt;Software Engineering with Microsoft Visual Studio Team System&lt;/A&gt; (Out May 17)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Software Engineering with Microsoft Visual Studio Team System is written for a software team that is considering running a software project using Visual Studio Team System (VSTS). It is about the “why” of VSTS: its guiding ideas, why they are presented in certain ways, and how they fit into the process of managing the software lifecycle. This book is the next best thing to having an onsite coach who can lead the team through a consistent set of processes.&lt;/P&gt;
&lt;P&gt;As group product planner for VSTS, Sam Guckenheimer has been the chief customer advocate for VSTS, responsible for its end-to-end external design. He has written this book as a framework for thinking about software projects in a way that can be directly tooled by VSTS. It presents essential theory and practical examples to describe a realistic process for IT projects.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://www.amazon.com/gp/product/0735621853/sr=8-1/qid=1143695504/ref=pd_bbs_1/104-2572326-4455121?%5Fencoding=UTF8"&gt;Working with Microsoft Visual Studio 2005 Team System &lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Get a pragmatic overview of the new team-based system of products that bring Visual Studio development tools to the enterprise—allowing architects, developers, testers, and project managers to collaborate in a single, extensible development environment. With insights from the Microsoft Visual Studio product team, early users, and the author's hands-on experience, readers will understand how to use this tightly integrated set of lifecycle development tools to simplify cross-team communication, reduce development complexity, accelerate productivity, and help save time and money. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=564517" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rimuri/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item></channel></rss>