<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Andy Lewis</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/andy-lewis/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/andy-lewis/feed.xml</link>
    <description>Musings on VS ALM and other technologies</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:39:21 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Build Information and Verbosity from Whiteboard to Publication</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/build-information-and-verbosity-from-whiteboard-to-publication</link>
      <pubDate>Tue, 31 May 2011 13:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2011/05/31/build-information-and-verbosity-from-whiteboard-to-publication/</guid>
      <description><![CDATA[Often when I write, I&rsquo;m communicating about a subject in which I already have fairly thorough...]]></description>
      <content:encoded><![CDATA[<p>Often when I write, I&rsquo;m communicating about a subject in which I already have fairly thorough knowledge. For example, when I&rsquo;m sharing basic technical information with a co-worker via email. Or producing a status report. Or simply writing a topic about a subject in which I&rsquo;m fluent. The fingers fly easily over the keyboard without pause. Quick, easy, mundane. On the other hand, exploratory writing, that kind which is truly creative, can be much more exciting, fun, and sometimes terrifying. This kind of writing is an exploration into the unknown.</p>
<p>For an endeavor to count as an exploration, you can&rsquo;t know exactly where you are going or what you will see until you get there. Even so, you are motivated by a strong hunch that there is fruitful territory &ldquo;out there somewhere.&rdquo; A true embodiment of the <a href="http://www.codinghorror.com/blog/2006/06/the-mysterious-cone-of-uncertainty.html">mysterious cone of uncertainty</a>, at the beginning of such a journey you have very little confidence in your estimate of how long the work will take. As you strike out toward the tempting pool of water in the distance, sometimes you feel tremendous hope about the outcome, and sometimes you begin to fear you are approaching a mirage. One might easily assume that technical writers don&rsquo;t get to have this kind of adventure. But I think many in our business would agree that we get to face both the delight and the discomfort of an empty page that has an uncertain future. Sometimes the journey requires us to foray into the realm of visual information, one that we verbal folks sometimes find a bit daunting in and of itself.</p>
<p>Take &ldquo;Manage Build Information and Control Verbosity,&rdquo; which I published last week. My initial goal was to simply tease out and clarify the key pieces of information needed to develop a build process that does not overload your system or your users with information.&nbsp; The main piece was a fairly simple table that articulates the effect of each possible verbosity setting. I already had this table written, so the topic should have been fairly short and sweet to produce.&nbsp; But there were a few loose threads I noticed that left questions in my mind. To follow one of them, I met briefly with one of the developers and drew a rough sketch on the whiteboard:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/8032.BldInformationVerbosity_v1.jpg" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-2011/8032.BldInformationVerbosity_5F00_v1.jpg" /></p>
<p>The sketch was not complete (and the handwriting was horrible!), and yet it also ventured outside the initial scope I planned for this topic. Even so, had an intuition that this larger context might be somehow helpful to customers, especially those new to our product. So I decided to invest more time and pressed on with more research, after which I developed this rough Visio draft for our artist:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/6787.BldInformationVerbosity%20v2.png" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-2011/6787.BldInformationVerbosity-v2.png" /></p>
<p>While my optimism about the potential value of the outcome was increasing, I was a little worried about whether a reasonably complete and fully accurate diagram would fit into the MDSN format. I met in person with our artist and she showed a surprising and wonderfully cheerful attitude about helping me tame this beast. She sent me this draft:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/1425.BldInformationVerbosity%20v3.png" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-2011/1425.BldInformationVerbosity-v3.png" /></p>
<p>This was a great first production draft, but there were lots of changes still needed, which I documented in OneNote, as you can see above. As I marked up the changes, I could see that this vision was looking more like a pool of water and less like a mirage as it came into sharper focus. </p>
<p>The end result:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/2514.BldInformationVerbosity%20v4.png" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-2011/2514.BldInformationVerbosity-v4.png" /></p>
<p>You&rsquo;ll notice in this final version of the image that I&rsquo;ve begun to leverage some personas (Julia and Roberto) that I set up for our team a few months ago. At some point in the future I may blog a bit more about them.&nbsp; Regardless, you can expect to see a lot more of these people in action, working through what I hope will be realistic and illustrative examples.</p>
<p>I hope the investment in the image proves to be worth the cost in terms of value to customers. But of course its ultimate success, and that of the topic (<a href="http://msdn.microsoft.com/en-us/library/hh190720.aspx">Manage Build Information and Control Verbosity</a>) depends not on what I think, but on what you think. So in closing, as I often say, I look forward to hearing your feedback!</p>
<p>Andy</p>]]></content:encoded>
    </item>
    <item>
      <title>Build Content 2011 Spring Cleaning</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/build-content-2011-spring-cleaning</link>
      <pubDate>Wed, 25 May 2011 14:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2011/05/25/build-content-2011-spring-cleaning/</guid>
      <description><![CDATA[Temps are in the &lsquo;90s outside and the HVAC is failing in my area of the building. So while...]]></description>
      <content:encoded><![CDATA[<p>Temps are in the &lsquo;90s outside and the HVAC is failing in my area of the building. So while technically the season is still spring, today feels like summer to me. But I&rsquo;m trying to stay cool, and I hope you find the Team Foundation Build content I&rsquo;m releasing today cool as well.&nbsp;Publishing this content feels to me like a bit of spring cleaning because I&rsquo;m refactoring some topics to improve and reduce duplication in some of our coverage of fundamental concepts. </p>
<p>I would not normally bother to blog about content restructuring; but in fact, with this release I&rsquo;m expanding coverage into some details that in the past have received shallow or no coverage at all. Our wing of the MSDN library now offers several new topics to help you understand and work with fundamental build process capabilities in the newly retitled <a href="http://msdn.microsoft.com/en-us/library/ms181715.aspx">Define Your Build Process</a>.</p>
<p>Some of these topics include (or link to) more detailed explanations that I hope will be helpful:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/hh190718.aspx">Specify Build Triggers and Reasons</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms253138.aspx">Use Your Build System to Work with Tests</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/hh190720.aspx">Manage Build Information and Control Verbosity</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/hh190721.aspx">Work with Build Workspaces</a></li>
</ul>
<p>Some of this information was already published in multiple places, but is now consolidated:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/hh190719.aspx">Work with Build Numbers</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/hh190722.aspx">Publish Symbol Data</a></li>
</ul>
<p>I hope you find this material useful and its design to be efficient in giving you knowledge you need to do your job. As always, I welcome your feedback.</p>
<p>Andy</p>]]></content:encoded>
    </item>
    <item>
      <title>Understand and Work with Build Workspaces MSDN Preview</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/understand-and-work-with-build-workspaces-msdn-preview</link>
      <pubDate>Sat, 30 Apr 2011 10:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2011/04/30/understand-and-work-with-build-workspaces-msdn-preview/</guid>
      <description><![CDATA[I plan to publish a set of MSDN topics to consolidate and bolster coverage of some of the most...]]></description>
      <content:encoded><![CDATA[<p>I plan to publish a set of MSDN topics to consolidate and bolster coverage of some of the most fundamental aspects of Team Foundation Build. The content will focus attention on key concepts that include: build triggers and reasons, build numbers, and the build workspace. I&rsquo;m writing to preview a sample of this update and highlight some content strategies I use. I strive to make the MSDN library better serve needs for knowledge that may be most keenly felt by people new to Team Foundation Build. But I want to do so in the most minimal manner possible with respect for the advanced skills and busy schedules among the people who do this important work.</p>
<h1>Preview of &ldquo;Understand and Work with Build Workspaces&rdquo;</h1>
<p>During the build process, the build agent compiles and does other work with your source files. Before the build agent can do this work, it downloads the files from folders on your version control server into a local working directory. To facilitate downloading these files, the build agent creates a version control workspace, which maps the folders on the server to the local folders in the working directory for the build agent.</p>
<p><img height="417" width="627" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/2475.BldWorkspace.png" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-2011/2475.BldWorkspace.png" alt="Role played by the build workspace" /></p>
<p><b>Before the build process starts</b></p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/6064.callout-1.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/6064.callout_2D00_1.gif" alt="Step 1" /> You set the working directory for each build agent in your build system. For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb399135.aspx">Create and Work with Build Agents</a>.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/7103.callout-2.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/7103.callout_2D00_2.gif" alt="Step 2" /> When you create your build definition, on the <b>Workspace</b> tab, you specify the folders that contain the files that you want to download and how these folders should be mapped to local folders on the build agent.</p>
<p><b>During the build process</b></p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/8540.callout-3.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/8540.callout_2D00_3.gif" alt="Step 3" /> The build process passes your workspace specifications to the <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_CreateWorkspace">CreateWorkspace</a> workflow activity to create a workspace in its working directory.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/4431.callout-4.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/4431.callout_2D00_4.gif" alt="Step 4" /> The build process uses the <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_DownloadFiles">DownloadFiles</a> activity to download the files into the workspace. After this step, the build agent can start work (such as compilation) on these files.</p>
<h2>Design a Workspace for Your Build Definition</h2>
<p>When you design the workspace for your build definition, you should follow some best practices.</p>
<p><b>Include all required folders.</b></p>
<p>Make sure that you include all folders that contain files that your build process requires. For example, if you add another solution to the <b>Items to Build</b> field on the <b>Process</b> tab, you may need to add another mapping to the workspace.</p>
<p><b>Include only required folders.</b></p>
<p>Map with a <b>Status</b> of <b>Active </b>only the folders that your build process needs. If a subfolder of a mapped folder contains files not required by the build process, make sure to map it with a <b>Status</b> value of <b>Cloaked</b>. In many situations, when you create a build definition, the root folder of team project is mapped in the workspace. This configuration results in the build agent downloading all the files in the version control folder of your team project. If this folder contains lots of data, your build could waste build system resources and slow down your build process by downloading large amounts of data that it does not need.</p>
<p>When you remove items from the <b>Items to Build</b> field on the <b>Process</b> tab, look for mappings that you can remove from the workspace.</p>
<p><b>Use the $(SourceDir) token to map a server folder to a local folder in the ..\Sources subdirectory.</b></p>
<p>In most cases, the best location for the source files on the build agent is under the <b>..\Sources</b> subdirectory in the working directory. You can specify this location by using the <b>$(SourceDir)</b> token in the Build Agent Folder box.</p>
<p><b>Be aware of how the workspace affects a build definition that is triggered by check-ins.</b></p>
<p>If you have set the <b>Trigger</b> of the build definition to <b>Continuous Integration</b>, <b>Rolling builds</b>, or <b>Gated Check-in</b>, the server folders that you map are bound to the build process. For example, if a developer checks in changes to a folder that is mapped in the workspace of a build definition that has a <b>Gated Check-in</b> trigger, those changes will be blocked until the build process is complete.</p>
<p>For more information about triggers, see <strong>Understand and Work with Build Triggers and Reasons</strong>.</p>
<h2>Build Definition Workspace Example</h2>
<p>Roberto, the build engineer, created the <b>Storefront Nightly</b> build definition.</p>
<p><img height="342" width="621" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/1488.BldWorkspaceExample.png" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-2011/1488.BldWorkspaceExample.png" alt="A build definition workspace exanoke" /></p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/6064.callout-1.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/6064.callout_2D00_1.gif" alt="Step 1" /> This build definition builds two solutions: <b>$/Core/Controllers/Controllers.sln</b> and <b>$/Core/Viewers/Viewers.sln</b>. As a result, it must map the two folders that contain these solutions, the projects that they contain, and all the other files that they require.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/7103.callout-2.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/7103.callout_2D00_2.gif" alt="Step 2" /> To improve build process efficiency, Roberto excludes a folder that contains documentation files that his build process does not require: <b>$/Core/Viewers/Docs</b>.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/common/8540.callout-3.gif" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-98-art-common/8540.callout_2D00_3.gif" alt="Step 3" /> The solutions depend on some binaries in a component library from another company. These binaries are protected by a proprietary mechanism that requires them to be located in a specific physical folder: <b>c:\adatum\widgets</b>.</p>
<h2>Copy Data Among Workspaces</h2>
<p>You can save time by copying mappings from one workspace to another.</p>
<h3>To copy mappings from one of your workspaces</h3>
<ol>
<li>
<p>Click <b>Copy Existing Workspace</b>.</p>
</li>
<li>
<p>In the <b>Select a Workspace to Copy</b> dialog box, copy the mappings from the workspace.</p>
</li>
</ol>
<h3>To copy mappings from another build definition workspace or another team member&rsquo;s workspace</h3>
<ol>
<li>
<p>Perform one of the following steps:</p>
<ul>
<li><strong>To copy mappings from another build definition workspace</strong>, open the build definition, and then click the <b>Workspace</b> tab. </li>
<li><b>To copy mappings from another team member&rsquo;s workspace</b>, ask the team member to open the <b>File</b> menu, click <b>Source Control</b>, and then click <b>Workspaces</b>. Select the workspace, and then click <b>Edit</b>. </li>
</ul>
</li>
<li>
<p>Right-click a row in the <b>Working folders</b> table, and then click <b>Select All</b>.</p>
</li>
<li>
<p>Right-click a row in the <b>Working folders</b> table, and then click <b>Copy</b>.</p>
</li>
<li>
<p>Create a text file, paste the contents of the Clipboard into the text file, and then save it.</p>
</li>
<li>
<p>Create a build definition, or modify an existing build definition that is the target of the mappings that you are copying. </p>
<p>For more information, see <a href="http://msdn.microsoft.com/en-us/library/ms181716.aspx">Create a Basic Build Definition</a> or <strong>Edit a Build Definition</strong>.</p>
</li>
<li>
<p>On the <b>Workspace</b> tab, right-click a row in the <b>Working folders</b> table, and then click <b>Paste</b>.</p>
</li>
<li>
<p>As necessary, adapt the mappings for use by the build agent. In particular, make sure that the value in the <b>Build Agent Folder</b> box is correct and includes the <b>$(SourceDir)</b> token as appropriate.</p>
</li>
</ol>
<h2>For More Information</h2>
<p>You define the build agent workspace when you create a build definition. For more information, see <a href="http://msdn.microsoft.com/en-us/library/ms181716.aspx">Create a Basic Build Definition</a>.</p>
<p>A built agent workspace is basically the same mechanism as the version control workspace that a developer uses to work with source files in a team project. You can copy mappings between a version control workspace and a build agent workspace. For more information about version control workspaces, see <a href="http://msdn.microsoft.com/en-us/library/ms181383.aspx">Set Up your Development Machine to Work with your Team's Project</a>.</p>
<h1>Key strategies </h1>
<p>I hope you find the above information to be useful and that it works better because it leverages the following strategies.</p>
<p><strong>Explain key concepts in one place: </strong>This topic and others in the set will provide support to the other topics that support higher-level goals. For example, this topic provides background material that you can leverage whether you are managing a build agent, creating a simple build definition, or developing a customized build process template.</p>
<p><strong>Emphasize best practices and avoid step-by-step guidance for trivial tasks: </strong>This goal can be elusive, so while I may not always hit it perfectly for every audience, I know its importance warrants that I continue to aim for it. As a Team Foundation Build customer you probably can figure out how to navigate a simple UI such as the workspace tab of the build definition editor. But even many advanced users still initially require an explanation of how a build workspace needs to be thought about and managed, especially when dealing with a large and complex codebase.</p>
<p><strong>Use graphics to convey complex concepts and illustrate examples of success: </strong>Graphics are generally expensive, and there are additional costs to create and maintain them within the MSDN library system. So I don&rsquo;t like to sprinkle them like candy into my topics just to make them look more approachable. That said, I know how daunting it is for a reader to face a wall of text about some complicated system. So with each major chunk of information I produce, I lift my hands from the keyboard and think for a moment about what kind of visual might do a better job of offering the information I&rsquo;m about to type. I spend an extra moment doing so when I need to convey complex concepts or model how the product appears when it is being used successfully.</p>
<p><strong>Offer links to peripheral information at the bottom when possible: </strong>Links are powerful tools that can serve a variety of purposes. But they can also distract attention and make material less readable. When a link goes to important but peripheral information, I try to offer it at the bottom of the topic to avoid distraction.</p>
<h1>Feedback</h1>
<p>As always, I welcome your thoughts and feedback about the content and the strategies, or any other suggestions for improving Team Foundation Build content.</p>]]></content:encoded>
    </item>
    <item>
      <title>Downloadable Build Process Template to Control Drop Folder Structure</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/downloadable-build-process-template-to-control-drop-folder-structure</link>
      <pubDate>Thu, 14 Apr 2011 07:38:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2011/04/14/downloadable-build-process-template-to-control-drop-folder-structure/</guid>
      <description><![CDATA[In Control Where the Build System Places Your Binaries I describe some techniques you can use to...]]></description>
      <content:encoded><![CDATA[<p>In <a href="http://msdn.microsoft.com/en-us/library/ff977206.aspx">Control Where the Build System Places Your Binaries</a> I describe some techniques you can use to control where your Team Foundation Build system drops the compiled binaries. Several folks asked me to provide, in downloadable form, the build process template that you create in this section: <a href="http://msdn.microsoft.com/en-us/library/ff977206.aspx#import_build_cust" title="http://msdn.microsoft.com/en-us/library/ff977206.aspx#import_build_cust">Create the build definition and the CustomOutputDirImport custom build process template</a>. Wanted to do it last month, but had some technical hurdles to overcome with the download site.</p>
<p>The wait is over; now you can save about 15 steps and just download the template: <a href="http://archive.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=TfsSdk&amp;DownloadId=15260" title="direct link">CustomOutputDirImport.xaml</a>. To use the template, after downloading it, you will need to check it in to version control and register it. For more information, see <a href="http://msdn.microsoft.com/en-us/library/dd647551.aspx#regsiter_template" title="http://msdn.microsoft.com/en-us/library/dd647551.aspx#regsiter_template">Register a Build Process Template with the System</a>.</p>
<p>Andy</p>]]></content:encoded>
    </item>
    <item>
      <title>How good was that build?</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/how-good-was-that-build</link>
      <pubDate>Mon, 31 Jan 2011 13:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2011/01/31/how-good-was-that-build/</guid>
      <description><![CDATA[Software teams need to continually check the current condition of their bits in order to ensure they...]]></description>
      <content:encoded><![CDATA[<p>Software teams need to continually check the current condition of their bits in order to ensure they are in at least a testable if not yet shippable state. Nearly every day, one or more people on the team seek answers to a few questions that are easily asked.&#160; “How good is that build?”&#160; “What was the last good build?” “What changes were made and what bugs were fixed in that build?”</p>  <p>Easily asked, but not necessarily easily answered. In this article I hope to help you quickly understand the quality indicators available in Team Foundation Build and how you can use them to answer your own questions about the quality of your completed builds. I also aim to begin filling a subtle gap in the recently published details about the <strong>AssociateChangesetsAndWorkItems</strong> activity.</p>  <h1>Three indicators of the quality of a completed build</h1>  <p>Your Team Foundation Build system provides three primary indicators about how good a completed build is:</p>  <ul>   <li>Build status (automatic) </li>    <li>“Build goodness” (automatic) </li>    <li>Build quality (manual) </li> </ul>  <p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/2011/3771.Build%20Explorer%20and%20Build%20Quality.jpg" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-2011/3771.Build-Explorer-and-Build-Quality.jpg" /></p>  <h1>How build status and “build goodness” are evaluated</h1>  <p>Before we explore all three indicators in detail, I think it will help for you to first see how the system generally evaluates the two automatic indicators:</p>  <table style="border-bottom: 1px solid; border-left: 1px solid; width: 600px; border-top: 1px solid; border-right: 1px solid" cellspacing="5" cellpadding="5"><tbody>     <tr>       <td class="large_text" colspan="3">These outcomes in the build...</td>        <td>&#160;</td>        <td class="large_text" colspan="2">Result in these quality indicators...</td>     </tr>      <tr>       <td style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; vertical-align: top; border-top: #000000 1px solid; border-right: #000000 1px solid"><span style="text-decoration: underline">Result of code compilation</span>           <br />          <br />Evaluated by the <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSBuild">MSBuild</a> activity           <br />          <br />Recorded in IBuildDetail           <br /><a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.compilationstatus.aspx">CompilationStatus</a> property</td>        <td style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; vertical-align: top; border-top: #000000 1px solid; border-right: #000000 1px solid"><span style="text-decoration: underline">Result of tests </span>          <br />          <br />Evaluated by the <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSTest">MSTest</a> activity           <br />          <br />Recorded in IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.teststatus.aspx">TestStatus</a> property</td>        <td style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; vertical-align: top; border-top: #000000 1px solid; border-right: #000000 1px solid"><span style="text-decoration: underline">Result of other steps in the build process</span>           <br />          <br />Did all post-compilation and post-test steps in the <a href="http://msdn.microsoft.com/en-us/library/dd647547.aspx">Default Template</a> (DefaultTemplate.xaml) succeed? </td>        <td>&#160;</td>        <td style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; vertical-align: top; border-top: #000000 1px solid; border-right: #000000 1px solid"><span style="text-decoration: underline">Build status</span></td>        <td style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; vertical-align: top; border-top: #000000 1px solid; border-right: #000000 1px solid"><span style="text-decoration: underline">Build goodness</span></td>     </tr>      <tr>       <td style="background-color: #cecece">Succeeded</td>        <td style="background-color: #cecece">Succeeded</td>        <td style="background-color: #cecece">Yes</td>        <td>&#160;</td>        <td style="background-color: #6bee7b"><img alt="Suceeded" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/0246.BldStatusSuceededIcon.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/0246.BldStatusSuceededIcon.jpg" /> Succeeded</td>        <td style="background-color: #6bee7b">Good</td>     </tr>      <tr>       <td style="background-color: #cecece">Succeeded</td>        <td style="background-color: #cecece">Succeeded</td>        <td style="background-color: #cecece">No</td>        <td>&#160;</td>        <td style="background-color: #6bee7b"><img alt="Partially Succeeded" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/8875.BldStatusPartiallySuceededIcon.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/8875.BldStatusPartiallySuceededIcon.jpg" /> Partially Succeeded </td>        <td style="background-color: #6bee7b">Good</td>     </tr>      <tr>       <td style="background-color: #cecece">Succeeded</td>        <td style="background-color: #cecece">Unknown or Failed </td>        <td style="background-color: #cecece">Yes or No</td>        <td>&#160;</td>        <td style="background-color: #6bee7b"><img alt="Partially Succeeded" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/8875.BldStatusPartiallySuceededIcon.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/8875.BldStatusPartiallySuceededIcon.jpg" /> Partially Succeeded </td>        <td style="background-color: #eca064">Bad</td>     </tr>      <tr>       <td style="background-color: #cecece">Unknown or Failed </td>        <td style="background-color: #cecece">Succeeded, Unknown, or Failed </td>        <td style="background-color: #cecece">Yes or No</td>        <td>&#160;</td>        <td style="background-color: #eca064"><img alt="Failed" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/8358.BldStatusFailedIcon.jpg" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/8358.BldStatusFailedIcon.jpg" /> Failed</td>        <td style="background-color: #eca064">Bad</td>     </tr>   </tbody></table>  <p>&#160;</p>  <p>There are a few exceptions that can cause the build to be evaluated differently than is shown in the above table.&#160; They are covered in the details below.</p>  <h1>Build Status</h1>  <p>Build status is the most prominent indicator of build quality in your build system.&#160; You see it in both the <span style="background-color: #ffffff">build explorer and the build results window.</span></p>  <h2>How build status is determined</h2>  <p>Build status is evaluated in the <a href="http://msdn.microsoft.com/en-us/library/dd647547.aspx">Default Template</a> (DefaultTemplate.xaml). In a build based on DefaultTemplate.xaml, build status is determined as follows:</p>  <ul>   <li><img alt="Suceeded" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/0246.BldStatusSuceededIcon.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/0246.BldStatusSuceededIcon.jpg" /> Succeeded       <ul>       <li>The <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSBuild">MSBuild</a> activity did not record a value of Failed in the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.compilationstatus.aspx">CompilationStatus</a> property. </li>        <li>The <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSTest">MSTest</a> activity did not record a value of Failed in the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.teststatus.aspx">TestStatus</a> property. </li>        <li>Various other activities did not fail. These activities include, but may not be restricted to gathering test impact data (<a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_GetImpactedTests">GetImpactedTests</a> activity) and publishing symbol data (<a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_PublishSymbols">PublishSymbols</a> activity). </li>     </ul>   </li>    <li><img alt="Partially Succeeded" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/8875.BldStatusPartiallySuceededIcon.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/8875.BldStatusPartiallySuceededIcon.jpg" /> Partially Succeeded       <ul>       <li>The <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSBuild">MSBuild</a> activity did not record a value of Failed in the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.compilationstatus.aspx">CompilationStatus</a> property. </li>        <li>One of the following occurred:          <ul>           <li>The <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSTest">MSTest</a> activity recorded a value of Failed in the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.teststatus.aspx">TestStatus</a> property and <strong>Fail Build on Test Failure</strong> was not selected when <strong>Automated Tests</strong> were specified in the build. </li>            <li>One of various other activities failed. These activities include, but may not be restricted to gathering test impact data (<a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_GetImpactedTests">GetImpactedTests</a> activity) and publishing symbol data (<a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_PublishSymbols">PublishSymbols</a> activity). </li>         </ul>       </li>     </ul>   </li>    <li><img alt="Failed" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/art/vs/bld/8358.BldStatusFailedIcon.jpg" original-url="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-art-vs-bld/8358.BldStatusFailedIcon.jpg" /> Failed       <ul>       <li>One of the following occurred:          <ul>           <li>The <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSBuild">MSBuild</a> activity recorded a value of Failed in the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.compilationstatus.aspx">CompilationStatus</a> property. </li>            <li>The <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_MSTest">MSTest</a> activity recorded a value of Failed in the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.teststatus.aspx">TestStatus</a> property and <strong>Fail Build on Test Failure</strong> was selected when <strong>Automated Tests</strong> were specified in the the build. </li>         </ul>       </li>     </ul>   </li> </ul>  <p>If you develop a custom build process template, you can use the <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_SetBuildProperties">SetBuildProperties</a> activity to force the build status to be whatever value you want based on your own workflow logic. If you use this approach, then the logic described above is disabled for any builds based on your custom build process template.</p>  <p>The build status for each build is stored in the data warehouse via the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.status.aspx">Status</a> property.</p>  <h2></h2>  <h2>The effect of build status </h2>  <p>Build status is displayed in the build results window and in Build Explorer. This indicator is used by the system to determine which retention policy to apply to a completed build.&#160; For more information, see <a title="http://msdn.microsoft.com/en-us/library/ms181716.aspx" href="http://msdn.microsoft.com/en-us/library/ms181716.aspx">Create a Basic Build Definition</a>.</p>  <h1>“Build goodness” (or “last good build”)</h1>  <p>I actually made up the phrase, “build goodness” because nowhere in the product does this phrase appear.&#160; But as you will see, the concept behind build goodness is important.</p>  <h2>How build goodness is determined</h2>  <p>Build goodness is evaluated by Team Foundation Server internal logic, and thus cannot be customized. The rule is simple.&#160; The build is “good” if both the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.compilationstatus.aspx">CompilationStatus</a> property and the IBuildDetail <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.teststatus.aspx">TestStatus</a> property are set to “Succeeded”. Otherwise, the build is “bad”.</p>  <p>Unlike build status, there is no attribute of a completed build in which build goodness is indicated.&#160; Rather, a reference to last good build is recorded in the&#160; IBuildDefinition <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddefinition.lastgoodbuildlabel.aspx">LastGoodBuildLabel</a> and&#160; <a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddefinition.lastgoodbuilduri.aspx">LastGoodBuildUri</a> properties.</p>  <h2>The effect of build goodness on the AssociateChangesetsAndWorkItems activity</h2>  <p>Build goodness has one very important effect, which is that it is used by the <a title="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_AssociateChangesetsAndWorkItems" href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_AssociateChangesetsAndWorkItems">AssociateChangesetsAndWorkItems</a> activity to determine which completed builds are associated with recent changesets and their associated work items. Specifically, the AssociateChangesetsAndWorkItems activity:</p>  <ol>   <li>Attempts to locate the last good completed build from the same build definition. If the last good build is located, it continues to the next step.&#160; Otherwise, it stops here. </li>    <li>Compiles a list of all the changesets applied to items mapped in the workspace defined in the build definition. </li>    <li>Associates the changesets, along with any work items to which they are linked, with the completed build. </li> </ol>  <h1>Build quality</h1>  <p>Build quality is simply a string that someone on your team uses to characterize the quality of the completed build.&#160; </p>  <h2>How build quality is determined</h2>  <p>You manually set this value, as explained in <a title="http://msdn.microsoft.com/en-us/library/ms181734.aspx" href="http://msdn.microsoft.com/en-us/library/ms181734.aspx">Rate the Quality of a Completed Build</a>. You can also customize the list of build quality values, as explained in <a title="http://msdn.microsoft.com/en-us/library/ms181735.aspx" href="http://msdn.microsoft.com/en-us/library/ms181735.aspx">Add or Remove Build Quality Values</a>.</p>  <h2>The effect of build quality</h2>  <p>Build quality is displayed at the top of the build results window of a completed build.&#160; It is also displayed and can be used to filter the view in Build Explorer.</p>  <h2></h2>  <h1>Closing</h1>  <p>This post is the result of one of several key concept article ideas that crystalized in my mind as I researched and wrote <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx">Team Foundation Build Activities</a>. I also want to express my thanks to <a href="https://mvp.support.microsoft.com/profile/Ed.Blankenship">Ed Blankenship</a>, whose comment inspired me to write this blog post.&#160; He promptly pointed out a subtle gap in the section on <a title="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_AssociateChangesetsAndWorkItems" href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Activity_AssociateChangesetsAndWorkItems">AssociateChangesetsAndWorkItems</a>, a gap that I hope this article partly fills.</p>  <p>I aim to blog additional experimental drafts such as this one, and then eventually publish the material on MSDN. Is this kind of information helpful?&#160; Is the above explanation of how the AssociateChangesetsAndWorkItems activity works sufficient?&#160; Or would you like to see the behavior laid out in more detail with examples and graphics? As always, I welcome your feedback.</p>  <p>Andy</p>]]></content:encoded>
    </item>
    <item>
      <title>Team Foundation Build Activity Reference is now available</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/team-foundation-build-activity-reference-is-now-available</link>
      <pubDate>Fri, 10 Dec 2010 08:12:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2010/12/10/team-foundation-build-activity-reference-is-now-available/</guid>
      <description><![CDATA[The Team Foundation Build Default Template enables you to define a build process that can perform...]]></description>
      <content:encoded><![CDATA[<p>The Team Foundation Build Default Template enables you to define a build process that can perform the basic tasks you expect from your build system. Use MSBuild to build the bits, run MSTest to test the bits, label the code, publish symbols to SymStore, drop the binaries in a folder, etc. DefaultTemplate.xaml has got you covered; you can get your build process defined and running in a matter of minutes.</p>  <p>But suppose you need your build process to run some custom process against the binaries after building the code. Or to publish some documentation to a web server. My anecdotal experience from monitoring various virtual user groups has left me with the impression is that specialized build processes are the norm rather than the rule. </p>  <p>If you are one of these customers, here is my holiday present to you, hot off the presses:</p>  <blockquote>   <p><span style="font-size: medium"><a title="http://msdn.microsoft.com/en-us/library/gg265783.aspx" href="http://msdn.microsoft.com/en-us/library/gg265783.aspx">Team Foundation Build Activities</a></span></p> </blockquote>  <p>This article describes in detail the Team Foundation Build Activities, which are the fundamental components of the build process. I wrote this topic with hopes of making it as easy as possible for you to create your own custom build process. </p>  <h1>Floor wax and dessert topping</h1>  <p>As I researched this content, I saw two major use patterns: reference and usage guide. A reference answers questions such as: What does this activity do?&#160; What is this property for? But I also wanted to help the developer working from the other side of the equation, focused on a specific goal they have in mind.&#160; So the answer to whether I should structure the content as a reference or as a usage guide was: both; <a href="http://www.hulu.com/watch/61320/saturday-night-live-shimmer-floor-wax">both a floor wax and a dessert topping</a>. </p>  <h2></h2>  <h1>Reference: How do I work this?</h1>  <p>&#160;</p>  <table style="width: 576px" border="0" cellspacing="0" cellpadding="2"><tbody>     <tr>       <td valign="top" width="423"><a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Reference_Alphabetical"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="toolbox and reference" border="0" alt="toolbox and reference" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/metablogapi/3201.toolbox-and-reference11_05D44941.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-metablogapi/3201.toolbox_2D00_and_2D00_reference11_5F00_05D44941.jpg" width="432" height="348" /></a></td>        <td valign="top" width="151">I know that many readers need the answer the question best expressed by the Talking Heads: “How do I work this?” So in the topic you will find an <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Reference_Alphabetical">alphabetical list</a> that contains a link to information about each activity.</td>     </tr>   </tbody></table>  <h1>Usage guide: How do I get there from here?</h1>  <p>&#160;</p>  <table style="width: 576px" border="0" cellspacing="0" cellpadding="0"><tbody>     <tr>       <td valign="top" width="434"><a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Reference_Goals"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="goals" border="0" alt="goals" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/metablogapi/0564.goals_750C9E92.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-metablogapi/0564.goals_5F00_750C9E92.jpg" width="430" height="324" /></a></td>        <td valign="top" width="140">Whenever I get an opportunity to spend some time writing code, I hope for but often don’t get a <a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx#Reference_Goals">goal-oriented guide</a> to the classes, methods, functions, or whatever set of constructs I’m working with. So in the topic I offer a list of goals. I also organized the material by goal to support easier reading from end to end.</td>     </tr>   </tbody></table>  <h1>Leaves a shine? Tastes great? Other?</h1>  <p>One other major design decision I made was to use a minimalist approach wherever possible. I enumerate the properties in lightweight bulleted lists instead of tables. I am intentionally inconsistent, abbreviating sections that cover simple activities. When I need to point to a deeply embedded element in the workflow, I use a terse but hopefully easily traversed format (as described in <a href="http://msdn.microsoft.com/en-us/library/ff972300.aspx">Navigate in a Complex Windows Workflow</a>).</p>  <p>How does the format of <a title="http://msdn.microsoft.com/en-us/library/gg265783.aspx" href="http://msdn.microsoft.com/en-us/library/gg265783.aspx">Team Foundation Build Activities</a> work for you? Any information not covered that you need? As always, I welcome your feedback.</p>  <p>Andy</p>]]></content:encoded>
    </item>
    <item>
      <title>Kinect is truly something new</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/kinect-is-truly-something-new</link>
      <pubDate>Tue, 30 Nov 2010 13:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2010/11/30/kinect-is-truly-something-new/</guid>
      <description><![CDATA[Stop playing Donkey Koooooong!
My generation was the first to spend teen years with video games....]]></description>
      <content:encoded><![CDATA[<h1><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/2262.action_shot.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98/2262.action_5F00_shot.jpg" alt="Action Shot" style="float: right; border: 0px; padding: 5px" /> Stop playing Donkey Koooooong!</h1>
<p>My generation was the first to spend teen years with video games. Many an afternoon I walked with my friend to the mall, where we sought out a darkened cacophonous arcade. A stout man in a blue uniform changed our dollars to quarters from a money changer on his belt, and away we went to blow up asteroids, gobble energy pellets, and make ultimately futile attempts to save cities from thermonuclear destruction.</p>
<p>If you grew up with the first wave of video games too, you must see <a href="http://movies.netflix.com/WiMovie/The-King-of-Kong/70068647" title="http://movies.netflix.com/WiMovie/The-King-of-Kong/70068647"><span style="color: #669966;">The King of Kong</span></a>. One of the best documentary films I&rsquo;ve ever seen, it is&nbsp;both moving and funny. At 17:30, the&nbsp;protagonist's son shrieks, &ldquo;Don&rsquo;t play! Don&rsquo;t play!&nbsp; Stop playing Donkey Koooooong!&rdquo; Can&rsquo;t think of a better illustration of the work/life/game balance problem.</p>
<p>When I worked in Silicon Valley, my co-workers and I enjoyed many a beer-bash Friday blowing each other up in the&nbsp;<a href="http://en.wikipedia.org/wiki/Marathon_(video_game)" title="http://en.wikipedia.org/wiki/Marathon_(video_game)"><span style="color: #669966;">Marathon</span></a> arena.&nbsp; Now that I&rsquo;m at Microsoft, a few friends have given me a hard time for not having an Xbox. But I agreed with my wife to delay buying in;&nbsp;too much going on in our lives: children, a couple of moves across the country, working for Microsoft, etc.</p>
<h1>The Kinect barges into our house</h1>
<p>So for years we&rsquo;ve had no video games in our home, and yet as with cars and toy guns, you can try to withhold these things, but your son will find them somehow anyway. Mostly it happened when family or friends brought out a Wii.&nbsp; It was great entertainment watching him laugh, jump around, and dance with his little legs. I wanted to play together. When Microsoft introduced the Kinect at the annual company meeting, I finally saw what I hoped would come: Xbox casual family games. But I hadn&rsquo;t dreamed the outcome would be so innovative and compelling. I ordered one that day.</p>
<p>Flash forward a few months to today, and already the Xbox Kinect has disrupted our lives in ways that are both wonderful and sometimes not so much.&nbsp; One big challenge that everyone should know about is that you must have at least 7-8 feet, but ideally about 10 feet of empty floor space in front of the Kinect.&nbsp; In our small TV room, a large entertainment center holds an old-school CRT TV.&nbsp; So to accommodate the Kinect, we had to downsize, replacing a sectional couch with a few chairs that can be pushed to the side.</p>
<p>We also are talking about ways manage video game sessions in various contexts: weeknights, when company comes, etc. Sometimes the Xbox takes control of the evening and must be reined in.&nbsp; And yet I&rsquo;m delighted that delaying introducing video games into my son&rsquo;s life seems to have had the effect we hoped for.&nbsp; He actually does a decent job of detaching from it all by himself; after an hour or so, he often walks away to build something with his toys or play with his train set.</p>
<h1>The Kinect scores</h1>
<p>When I introduced my son to the Kinect, he immediately got it. He has since said a few times, voice choking with emotion, how a video game is all he ever wanted. (I guess he forgets that only a few months ago his baby sister was all he wanted.) It has been a blast watching him immediately grasp the simple interface then jump, swat, and steer with such intensity and delight. His friends now want to come to our house and lament that they have only a Wii.</p>
<p>As for the Kinect games themselves, they are pretty much everything I&rsquo;d hoped they would be.&nbsp; Kinect Adventures is the perfect introduction to full-motion gaming.&nbsp; You use your whole body to hit or kick a ball, jump and duck past obstacles, and even surf through the clouds. The simple interface, forgiving physics, and fun diversions of Joy Ride makes it a perfect experience for making young children feel like they are in the &ldquo;driver&rsquo;s seat&rdquo;, although it must be played standing up. </p>
<p>I think what got my wife to partly forgive the intrusion of the Xbox is Dance Central, which stands out as the coolest game in terms of full-body motion.&nbsp; The whole idea that swinging a white nun chuck around is like dancing now seems so silly.&nbsp; Dance Central offers beginner-level moves, but you can quickly ramp up to harder dances. The on-screen dancer&rsquo;s limbs light up in red to show you where you even subtle mistakes on any part of your body, and thus help you learn the moves. The announcer offers both praise and critiques in fun ways. It feels really good to spend that precious 1 hour or so of free time after the kids go to bed dancing instead of sitting on the sectional watching TV.</p>
<p>I do use the Xbox controller too. Halo? Nah, not right now. I spin up Galaga or Time Pilot. Somehow playing these vintage games after a virtual river raft adventure feels just right to me. (And I get to play for free; no quarters needed!) I can&rsquo;t imagine replacing the classic joystick and Fire button with a Kinect interface. And yet, I keep dreaming of ideas for how to the Kinect could be used in all kinds of new ways and expanded into new markets. </p>
<p>I don&rsquo;t know when I&rsquo;ll have time to explore these ideas further. But for now, I can&rsquo;t remember ever feeling this proud of a Microsoft consumer product. So pull out a tape measure, check floor space in your TV room, and then go check it out: <a href="http://www.xbox.com/kinect" title="http://www.xbox.com/kinect"><span style="color: #669966;">http://www.xbox.com/kinect</span></a>!</p>]]></content:encoded>
    </item>
    <item>
      <title>Use the Visual Studio Command Prompt to augment the IDE</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/use-the-visual-studio-command-prompt-to-augment-the-ide</link>
      <pubDate>Thu, 30 Sep 2010 07:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2010/09/30/use-the-visual-studio-command-prompt-to-augment-the-ide/</guid>
      <description><![CDATA[Today I&rsquo;m writing mostly to those of you who do not consider yourself to be power users. And...]]></description>
      <content:encoded><![CDATA[<p>Today I&rsquo;m writing mostly to those of you who do not consider yourself to be power users. And yet deep down inside you suspect you are (or could be) way more powerful than anyone realizes. I&rsquo;m not talking about receiving an invitation to Hogwarts, nor about pulling a sword from a stone. Rather, I&rsquo;m talking about that geeky (and perhaps very lonely) feature on your computer known as the Visual Studio Command Prompt.</p>
<table cellpadding="2" cellspacing="0" border="0">
<tbody>
<tr>
<td width="465" valign="top"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/metablogapi/3443.image_2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-metablogapi/3443.image_5F00_2.png"><img height="227" width="454" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/09/98/metablogapi/8420.image_thumb.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-09-98-metablogapi/8420.image_5F00_thumb.png" alt="image" border="0" title="image" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /></a></td>
<td width="150" valign="top"><em>While it is not much to look at in the conventional sense, the command prompt is truly a thing of beauty if you love speed and efficiency. (Want to see more? Behold this gallery: </em><a href="http://www.guidebookgallery.org/screenshots/commandprompt" title="http://www.guidebookgallery.org/screenshots/commandprompt"><em>command prompt</em></a><em>.)</em></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h1>&ldquo;Healthy laziness&rdquo; at the keyboard</h1>
<p>I love a good shortcut and I believe this is &ldquo;healthy laziness&rdquo;; that is, the urge to find ways to reduce or even eliminate time spent on menial tasks. I want to conserve time and energy for analysis (solving problems in my code), creativity (designing something), or for just being able to get home in time for diner.</p>
<p>Back in the day, I used the command prompt a lot more.&nbsp; When I first started using Windows 3.1, I think I actually recall feeling relieved that I wouldn&rsquo;t have to boot DOS in order to get work done quickly.&nbsp; There is something so satisfying about blasting through a task, fingers never leaving the keyboard to reach for the mouse.&nbsp; In response, your computer rolls those cool cryptic messages upward across a black window.</p>
<p>Another great example of this kind of bliss can be found by using keyboard shortcuts, the most powerful of which are sometimes obscure.&nbsp; Need a calculator?&nbsp; Press START+R, in the Run dialog box type &ldquo;calc&rdquo;, and press ENTER. To maximize the vertical screen real estate of a window in Windows 7 or Windows Server 2008 R2, press START+SHIFT+UP_ARROW. Want to put all the windows away, press START+D.&nbsp; How far can you go in your day without reaching for the mouse? I think this is fun stuff, and it saves wear and tear on my mouse arm and hand.</p>
<h1>How the VS command prompt can augment the Visual Studio IDE</h1>
<p>You don&rsquo;t have to be an Emacs command-line purist to enjoy the benefits of the command prompt. While I was researching <a href="http://msdn.microsoft.com/en-us/library/ff977206.aspx">Control Where the Build System Places Your Binaries</a>, I repeatedly needed to test the outcome of a few changes to a few files. For this kind of scenario, you can&rsquo;t test the outcome of your work locally. Essentially you must:</p>
<ol>
<li>Tweak various XML files such as a build process template XAML file and a few VS code project files. </li>
<li>Check in the modified files. </li>
<li>Queue your build. </li>
<li>View your build results. </li>
<li>Return to step 1 as many times as needed until your build process functions the way you want. </li>
</ol>
<p>At first I used only the Visual Studio IDE for many cycles of this task. I started to get tired of having to click through the same UI over and over again. It then occurred to me that I could use the command prompt to save some time.</p>
<h2>tf checkin /noprompt (check in all the stuff I&rsquo;ve changed)</h2>
<p>When you use the IDE to check-in files, you have to open the window, view the files that have changed, make sure they are selected, and then click the button. But when you are repeatedly changing only a few files and you know you simply want to upload them all, you can simply issue this command:</p>
<p><strong>tf checkin /noprompt</strong></p>
<p>Of course, before you do this you should first really be sure that you really know all the files you&rsquo;ve changed. Not sure?&nbsp; Well, simply type:</p>
<p><strong>tf checkin </strong></p>
<p>to get a list of the files you&rsquo;ve changed.</p>
<h2>tfsbuild start (queue a build)</h2>
<p>Immediately after I checked in my changes, I didn&rsquo;t even need to leave the command prompt.&nbsp; I simply entered the following command:</p>
<p><strong>tfsbuild start http://contoso-team:8080/tfs/defaultcollection Test "Build My Utilities"</strong></p>
<p>With the <strong>tf checkin </strong>and the <strong>tfsbuild start </strong>command invocations stored in the command history buffer, each time I modified a set of files, I was only a five keystrokes away (including the ALT+Tab to switch from the IDE to the command prompt) from testing the latest changes I made.</p>
<h1>A few tips for newbs</h1>
<p>A few tips that might help if you have not had much experience with the Visual Studio command prompt:</p>
<ul>
<li><span style="text-decoration: underline;">Launch the Visual Studio Command prompt</span>: Click <strong>Start</strong>, click <strong>All Programs</strong>, click <strong>Microsoft Visual Studio 2010</strong>, click <strong>Visual Studio Tools</strong>, and then click <strong>Visual Studio Command Prompt (2010)</strong>. </li>
<li><span style="text-decoration: underline;">Select a workspace for version control commands</span>: In Visual Studio, the Workspace drop-down menu at the top of Source Control Explorer is what determines the workspace you are working in. But in the command prompt, the current directory is what determines the workspace you are working in. </li>
<li><span style="text-decoration: underline;">Get the team project collection URL</span>: Some commands (such as <strong>tfsbuild start</strong>) require this data, and you can quickly get it in Visual Studio by going to Team Explorer, right-clicking the team project collection, and then clicking Properties.&nbsp; The URL appears in the Properties pane. </li>
<li><span style="text-decoration: underline;">Cycle through the command history buffer</span>: Press the up and down arrow keys to re-use commands you have already entered. </li>
<li><span style="text-decoration: underline;">Auto-complete file or directory names</span>: when a file name or directory is an argument, type a few letters of and then press the Tab key one or more times to cycle through the names that match the letters you typed. </li>
<li><span style="text-decoration: underline;">Get help with a command</span>: Use the /? argument to get brief help within the command line window (e.g., <strong>tf checkin /?</strong>).&nbsp; For tf.exe (version control) commands, you can use the <strong>msdn </strong>argument to display the MSDN help about a command (e.g. <strong>tf msdn checkin</strong>).</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Everything you wanted to know about custom build processes (but were afraid to ask)</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/everything-you-wanted-to-know-about-custom-build-processes-but-were-afraid-to-ask</link>
      <pubDate>Tue, 28 Sep 2010 06:55:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2010/09/28/everything-you-wanted-to-know-about-custom-build-processes-but-were-afraid-to-ask/</guid>
      <description><![CDATA[Classic career success principal: under-promise and over-deliver. In that sense, the above title is...]]></description>
      <content:encoded><![CDATA[<p>Classic career success principal: under-promise and over-deliver. In that sense, the above title is a bad idea. But today I&rsquo;m turning the old saw on its head to direct your attention to a topic we published yesterday: <a href="http://msdn.microsoft.com/en-us/library/ff977206.aspx">Control Where the Build System Places Your Binaries</a>. I&rsquo;m hopeful this material veers into some fruitful territory, but I know that there is a lot of important ground still to cover when it comes to custom build processes. And in future publications of MSDN, more material is on the way.</p>
<p>But for today my goal is to spark a conversation about this topic in particular, and in general about the best ways for our content to support your success in using Team Foundation Build.</p>
<h1>Control where the build system places your binaries</h1>
<p>As I researched this topic, I aimed to find a basic and common goal for a relatively simple custom build process. However, I felt it was equally important to illuminate a scenario that included techniques that are generally useful across the long tail of custom build process scenarios.</p>
<p>I settled on the goal of controlling where the build system drops the compiled binaries. The default build process (defined in DefaultTemplate.xaml) drops the compiled binaries from all code projects into a single directory:</p>
<p><img src="http://msdn.microsoft.com/Ff977206.BldCustOutputDirFlowDefault(en-us,VS.100).png" alt="Default flow" /></p>
<p>However, you might want to organize the binaries into a more granular and organized directory structure.&nbsp; And so yesterday we published a topic that covers to how to create a custom build process that drops your binaries where you want them. But we also aim to teach some techniques that I hope are generally useful when you are creating many kinds of customized build processes. </p>
<p>Here it is:</p>
<blockquote>
<p><a href="http://msdn.microsoft.com/en-us/library/ff977206.aspx">Control Where the Build System Places Your Binaries</a></p>
</blockquote>
<p>I already know of a few minor tweaks I need to make to the article.&nbsp; But I have several big questions on my mind about which structures, formats, and techniques would best support you.</p>
<h2>Windows Workflow shorthand syntax</h2>
<p>DefaultTemplate.xaml contains a complex structure with deeply nested elements. In the topic, I need to direct you to the 2nd invocation of the <strong>MSBuild </strong>activity, which is where your code projects actually get compiled.&nbsp; This activity is embedded 14 levels deep. So I use the following &ldquo;shorthand syntax&rdquo; to help you locate the activity:</p>
<ol>
<li>Sequence &gt; </li>
<li>Run on Agent &gt; </li>
<li>Try Compile, Test, and Associate Changesets and Work Items [Try] &gt; </li>
<li>Sequence &gt; </li>
<li>Compile, Test, and Associate Changesets and Work Items &gt; </li>
<li>Try Compile and Test [Try] &gt; </li>
<li>Compile and Test &gt; </li>
<li>For Each Configuration in BuildSettings.PlatformConfigurations [Body] &gt; </li>
<li>Compile and Test for Configuration &gt; </li>
<li>If BuildSettings.HasProjectsToBuild [Then] &gt; </li>
<li>For Each Project in BuildSettings.ProjectsToBuild &gt; </li>
<li>Try to Compile the Project [Try] &gt; </li>
<li>Compile the Project &gt; </li>
<li>Run MSBuild for Project </li>
</ol>
<p>(Next month I will refine the shorthand syntax to use an ordered list as I do above instead of a Code block.) I then offer a link to a generic support topic: <a href="http://msdn.microsoft.com/en-us/library/ff972300.aspx">Navigate in a Complex Windows Workflow</a>. I used this technique in lieu embedding 14 additional steps within the procedure. </p>
<p>How well does this technique work for you?</p>
<h2>Conceptual vs. step-by-step art</h2>
<p>I wanted make crystal clear the high-level concepts such as: the default process, the custom process, how the key pieces come together. So I spent a good bit of time on conceptual art at the expense of step-by-step screenshots. </p>
<p>Were the conceptual art pieces clear?&nbsp; Did they help accelerate you through the learning curve? Do you need a screenshot for each step?&nbsp; </p>
<p>I&rsquo;m open to adding more screenshots to this kind of guidance in the future, but I&rsquo;m wondering how much they are needed (there is some cost to adding them), and somewhat worried about making the topic harder to read by making it more bloated and cluttered. Would you want them for every step, or perhaps only now and then to show you are on the right track, with an emphasis on displaying the trickier parts of the task?</p>
<h2>Conciseness vs. completeness</h2>
<p>As a writer, I find one of the most interesting challenges to be determining the right level of detail to offer. Getting this right is especially tricky when serving an audience with diverse backgrounds, levels of experience, technical capabilities, etc. In this topic, I tried to leave out the most obvious instructions (for example, launching Source Control Explorer).&nbsp; I also tried to support more advanced users with a couple of &ldquo;Overview of the steps that you follow&rdquo; sections. </p>
<p>What do you think? Too many details, or did I leave out some that you needed? Were the &ldquo;Overview of the steps&hellip;&rdquo; sections helpful at all in accelerating your learning curve, or did they get in the way? </p>
<p><strong>Note</strong>: I would love to leverage JavaScript to hide some detailed steps in order to accelerate skimming the topic , especially for advanced readers. I used this technique when I used to cover SharePoint Designer.&nbsp; For example: <a href="http://blogs.msdn.com/sharepointdesigner/archive/2008/09/16/use-javascript-to-enable-formatting-of-data-view-ui-controls.aspx">Use JavaScript to enable formatting of Data View UI controls</a>. This kind of tool is not available on MSDN, but I&rsquo;m looking into it.</p>
<h2>Customization patterns</h2>
<p>In the topic we cover some customization patterns on both the Windows Workflow and the MSBuild sides of the fence. I list the patterns we cover at the top of the topic. Did we cover these patterns well? Are there some other patterns that you would like to see covered?</p>
<h1>Don&rsquo;t be shy</h1>
<p>In fact, I have seen no shyness in the TF Build community when it comes to asking tough questions and sharing opinions. This is goodness. I want to channel some of that energy into improving our content. I&rsquo;d love to hear your specific opinions on the above questions and also your general thoughts and ideas about what content is most sorely needed to make you more successful in working with Team Foundation Build.</p>]]></content:encoded>
    </item>
    <item>
      <title>Migrate to Team Foundation Server from Visual SourceSafe</title>
      <link>https://docs.microsoft.com/archive/blogs/andy-lewis/migrate-to-team-foundation-server-from-visual-sourcesafe</link>
      <pubDate>Mon, 03 May 2010 12:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Andy Lewis - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/andy-lewis/2010/05/03/migrate-to-team-foundation-server-from-visual-sourcesafe/</guid>
      <description><![CDATA[Have you been considering migrating from Visual SourceSafe to Team Foundation Server?&nbsp; If so,...]]></description>
      <content:encoded><![CDATA[<P>Have you been considering migrating from Visual SourceSafe to Team Foundation Server?&nbsp; If so, then there has never been a better time than now. To help you get going, I’ve updated and completely overhauled our guidance.&nbsp; The following topic should give you the information you need to make the switch: <A href="http://msdn.microsoft.com/en-us/library/ms253060(v=VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms253060(v=VS.100).aspx">Migrate from Visual SourceSafe</A>.</P>
<P>If you see any issues or omissions, please let me know. (I’ve already spotted the broken internal link in step 1; the fix is slated to be published in the next month or so.)</P>
<P>Andy</P>]]></content:encoded>
    </item>
  </channel>
</rss>