<?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>Jim Lamb</title><link>http://blogs.msdn.com/jimlamb/default.aspx</link><description>Program Manager for Team Foundation Server.&lt;br&gt;
This content is provided &amp;ldquo;AS IS&amp;rdquo; with no warranties and confers no rights.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How to Build Compact Framework Projects with TFS 2010</title><link>http://blogs.msdn.com/jimlamb/archive/2009/11/13/how-build-compact-framework-projects-with-tfs-2010.aspx</link><pubDate>Fri, 13 Nov 2009 20:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9922198</guid><dc:creator>JimLamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9922198.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9922198</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9922198</wfw:comment><description>&lt;p&gt;If you have a Visual Studio 2008 solution with one or more Compact Framework (also referred to as “Smart Device”) projects that you’re trying to build with TFS 2010 or MSBuild 4.0, you’ve probably hit one of the following errors:&lt;/p&gt;  &lt;blockquote&gt;   &lt;code&gt;error MSB4062: The &amp;quot;Microsoft.CompactFramework.Build.Tasks.AddHighDPIResource&amp;quot; task could not be loaded from the assembly Microsoft.CompactFramework.Build.Tasks&lt;/code&gt; &lt;/blockquote&gt;  &lt;p&gt;Or,&lt;/p&gt;  &lt;blockquote&gt;   &lt;code&gt;error MSB4062: The &amp;quot;Microsoft.CompactFramework.Build.Tasks.GetDeviceFrameworkPath&amp;quot; task could not be loaded from the assembly Microsoft.CompactFramework.Build.Tasks&lt;/code&gt; &lt;/blockquote&gt;  &lt;p&gt;The problem is a setting in the application configuration file for MSBuild (MSBuild.exe.config), which you’ll find in your .NET Framework directory (e.g. “C:\Windows\Microsoft.NET\Framework\v4.0.21006” for x86 systems or “C:\Windows\Microsoft.NET\Framework64\v4.0.21006” for x64 systems).&lt;/p&gt;  &lt;p&gt;You’ll need to remove this element:&lt;/p&gt;   &lt;pre class="prettyprint"&gt;&amp;lt;dependentAssembly&amp;gt;
  &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.CompactFramework.Build.Tasks&amp;quot; 
    publicKeyToken=&amp;quot;b03f5f7f11d50a3a&amp;quot; 
    culture=&amp;quot;neutral&amp;quot;/&amp;gt; 
    &amp;lt;bindingRedirect 
      oldVersion=&amp;quot;0.0.0.0-99.9.9.9&amp;quot; 
      newVersion=&amp;quot;10.0.0.0&amp;quot;/&amp;gt;
&amp;lt;/dependentAssembly&amp;gt;&lt;/pre&gt;

&lt;p&gt;This will stop MSBuild from trying to load the non-existent 10.0 version of the Microsoft.CompactFramework.Build.Tasks assembly.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922198" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/FAQ/default.aspx">FAQ</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/tfs2010/default.aspx">tfs2010</category></item><item><title>Upgrading TFS 2008 Build Definitions to TFS 2010</title><link>http://blogs.msdn.com/jimlamb/archive/2009/11/03/upgrading-tfs-2008-build-definitions-to-tfs-2010.aspx</link><pubDate>Tue, 03 Nov 2009 20:48:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9916970</guid><dc:creator>JimLamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9916970.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9916970</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9916970</wfw:comment><description>&lt;p&gt;If you’re a TFS 2008 user who’s thinking about installing &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=6C70FD8F-615E-4203-A028-ACB2C2B8B88F"&gt;TFS 2010 Beta 2&lt;/a&gt;, you may be wondering what will be involved in getting your existing build definitions to work in 2010. You see, build definitions in TFS 2008 are entirely automated using MSBuild. Whereas build definitions in TFS 2010 only use MSBuild for source code compilation and use Windows Workflow to orchestrate everything else that happens during the build process (setting up the workspace, running tests, indexing sources, copying binaries to the drop folder, associating changesets and work items, etc.). We refer to this workflow (it’s actually a &lt;a href="http://msdn.microsoft.com/en-us/library/ms752059.aspx"&gt;XAML&lt;/a&gt; file) as a &lt;a href="http://msdn.microsoft.com/en-us/library/dd647551(VS.100).aspx"&gt;build process template&lt;/a&gt;. Naturally, you may have some questions about how this will affect your investment in automation your TFS 2008 builds.&lt;/p&gt;  &lt;p&gt;Here are answers to some of the most common questions I’ve heard so far. Please let me know if you have any other questions.&lt;/p&gt; &lt;dl&gt;&lt;dt&gt;&lt;strong&gt;Will my TFS 2008 build agents work with a TFS 2010 server?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;No, they won’t. You’ll need to install the TFS 2010 &lt;a href="http://msdn.microsoft.com/en-us/library/ms252495(VS.100).aspx"&gt;build service&lt;/a&gt;. It’s included in the same setup as the TFS application tier and you would generally set it up on a dedicated build machine. If you’re just doing nightly builds, however, and not doing a steady stream of continuous integration builds, it’s fine to install it on the same machine as your application tier. I recommend reviewing the help topic on &lt;a href="http://msdn.microsoft.com/en-us/library/dd793166(VS.100).aspx"&gt;Understanding a Team Foundation Build System&lt;/a&gt; before deploying more elaborate build infrastructures. After upgrading from TFS 2008 and setting up build services for TFS 2010, you’ll want to review each of you active build definitions and set the default build controller appropriately (see the Defaults tab of the Build Definition editor).&lt;/p&gt;   &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;Can I install the TFS 2010 Build Service on my TFS 2008 build machine?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;Yes, you can. Even though they both default to the same port (9191), they can share that port without any problems.&lt;/p&gt;   &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;What do else will I need to install on the build machine?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;It depends on what you’re building. If you install the TFS 2010 build service on a clean machine, it will install the .NET 4.0 Framework which includes MSBuild. It will also install the components necessary to support the following:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;Code Analysis &lt;/li&gt;        &lt;li&gt;Unit test execution with MSTest &lt;/li&gt;        &lt;li&gt;&lt;a href="http://blogs.msdn.com/camerons/archive/2008/07/11/layer-diagram.aspx"&gt;Architectural layer validation&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;Database schema deployment and test data generation &lt;/li&gt;     &lt;/ul&gt;      &lt;p&gt;Unfortunately, the .NET 4.0 Framework is missing some of the tools necessary to build projects targeting the .NET 2.0 and 3.x Frameworks. For Beta 2, you can install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C17BA869-9671-4330-A63E-1FD44E0E2505"&gt;Windows SDK&lt;/a&gt; or &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dc333ac8-596d-41e3-ba6c-84264e761b81"&gt;Visual Studio 2010 Beta 2&lt;/a&gt; on the build machine. If you need to build SharePoint or Office (VSTO) projects, you’ll need to install the appropriate SDKs or Visual Studio.&lt;/p&gt;   &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;Will I need to redo my build definition?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;No, you won’t. TFS 2010 includes a special &lt;a href="http://msdn.microsoft.com/en-us/library/dd647548(VS.100).aspx"&gt;Upgrade&lt;/a&gt; build process template that mimics the behavior of TFS 2008 builds by invoking MSBuild on your existing TFSBuild.proj file. TFS 2010 will even let you use new features like &lt;a href="http://msdn.microsoft.com/en-us/library/dd787631(VS.100).aspx"&gt;gated check-in&lt;/a&gt; and shelveset builds.&lt;/p&gt;   &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;&lt;em&gt;Should&lt;/em&gt; I convert my build definitions to use the &lt;em&gt;Default&lt;/em&gt; build process template?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;The default build process does make it easier to make certain customizations to your build definition using &lt;a href="http://msdn.microsoft.com/en-us/library/dd647547(VS.100).aspx#parameters_basic"&gt;build process parameters&lt;/a&gt;. &lt;/p&gt;   &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;Can I keep using my custom MSBuild tasks?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;If you’re using the Upgrade build process template then, yes, you absolutely can continue using your MSBuild tasks. If you choose to use the Default build process template for new build definitions, the answer is a little more complicated. For actions you want to perform during the compile phase of your build, you can customize any of the projects getting built to use whatever custom MSBuild tasks you wish to use.&lt;/p&gt;   &lt;/dd&gt;&lt;dd&gt;     &lt;p&gt;If, however, you want to perform actions at some other stage of the build process (e.g. after running tests), it becomes trickier to invoke an MSBuild task. You would need to create a special .proj file invoking the custom task you wanted to use and modify the build process template by adding an MSBuild activity that builds your that .proj file. Alternatively, you could create a custom workflow activity to do what you need to do and integrate that into your build process template. I’ll have blog post up later this week covering that topic in detail.&lt;/p&gt;   &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;If I’m not ready to upgrade to TFS 2010, can I build my VS 2010 solutions/projects with TFS 2008?&lt;/strong&gt;&amp;#160;&lt;/dt&gt;&lt;dd&gt;     &lt;p&gt;Yes, here are the steps to configure the TFS 2008 Build Agent to use MSBuild 4.0 to build your VS 2010 solutions:&lt;/p&gt;      &lt;ol&gt;       &lt;li&gt;Navigate to this folder on the TFS 2008 build agent:         &lt;br /&gt;          &lt;pre&gt;&amp;lt;program files&amp;gt;\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\TFSBuildService.exe&lt;/pre&gt;
      &lt;/li&gt;

      &lt;li&gt;Open the TFSBuildService.exe.config file. &lt;/li&gt;

      &lt;li&gt;Search for the MSBuildPath appSetting. &lt;/li&gt;

      &lt;li&gt;Set the value to the directory containing the 4.0 version of MSBuild.exe (e.g. “C:\Windows\Microsoft.NET\Framework\v4.0.21006”). &lt;/li&gt;
    &lt;/ol&gt;

    &lt;p&gt;Of course, you’ll need to have .NET 4.0 installed on the TFS 2008 build agent. For Beta 2, I’d recommend installing VS 2010 on the TFS 2008 build agent machine. Let me know if you have any questions.&lt;/p&gt;
  &lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;Have you done anything to about the 260 character limitation on paths?&lt;/strong&gt; &lt;/dt&gt;&lt;dd&gt;
    &lt;p&gt;Sort of. We’ve changed the default working directory for TFS 2010 build agents to &amp;lt;systemdrive&amp;gt;\Builds rather than putting it beneath the build service account’s temporary directory. We’ve also shortened up the overall path to the working directory for a particular build definition to reduce the odds of you hitting the &lt;a href="http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx"&gt;260 character path limitation&lt;/a&gt; in Windows.&lt;/p&gt;
  &lt;/dd&gt;&lt;/dl&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9916970" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Build/default.aspx">Build</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/tfs2010/default.aspx">tfs2010</category></item><item><title>What Everybody Ought to Know about the TFS SDK</title><link>http://blogs.msdn.com/jimlamb/archive/2009/10/29/what-everybody-ought-to-know-about-the-tfs-sdk.aspx</link><pubDate>Fri, 30 Oct 2009 03:49:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9915089</guid><dc:creator>JimLamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9915089.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9915089</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9915089</wfw:comment><description>&lt;p&gt;If you’ve checked out the latest Visual Studio SDK, you may have noticed something relative to the previous releases:&lt;/p&gt;  &lt;table&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;SDK Release&lt;/th&gt;        &lt;th align="right"&gt;Download (MB)&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Visual Studio 2005&lt;/td&gt;        &lt;td align="right"&gt;124&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Visual Studio 2008&lt;/td&gt;        &lt;td align="right"&gt;109&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Visual Studio 2010&lt;/td&gt;        &lt;td align="right"&gt;10&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;So, where’d the other hundred megabytes go? On-line – that’s where. The latest Visual Studio SDK really only contains the core content necessary to build new VSIP packages and other extensibility projects. All of the documentation and samples have been moved to their new home on &lt;a href="http://code.msdn.microsoft.com/vsx"&gt;MSDN Code Gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Of course, that includes the &lt;a href="http://code.msdn.microsoft.com/TfsSdk"&gt;Team Foundation Server 2010 Beta 2 SDK&lt;/a&gt; samples and documentation. It also includes a starter set of code snippets which aren’t full-on samples, but give users programming against our object model quick, narrowly scoped answers to common implementation questions. Lastly, there’s a compiled HTML help (CHM) file that provides some basic documentation on our client object model.&lt;/p&gt;  &lt;h3&gt;What’s the Plan for the SDK?&lt;/h3&gt;  &lt;p&gt;We currently have half of the samples that shipped with TFS 2008 RTM updated for 2010 Beta 2 and published to Code Gallery. Due to some recent API changes, these will require additional updating prior to RTM. The remaining work is as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Finish updating remaining samples and publish to Code Gallery &lt;/li&gt;    &lt;li&gt;Review XML documentation comments in public object model API &lt;/li&gt;    &lt;li&gt;Coordinate with our technical writers to deliver API documentation for MSDN &lt;/li&gt;    &lt;li&gt;Identify, author and publish new samples and snippets as appropriate &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If there are particular samples or snippets that you’d like to see, post a comment or &lt;a href="http://blogs.msdn.com/jimlamb/contact.aspx"&gt;drop me a line&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915089" width="1" height="1"&gt;</description></item><item><title>Enabling Symbol and Source Server Support in TFS Build 2010 Beta 1</title><link>http://blogs.msdn.com/jimlamb/archive/2009/06/15/enabling-symbol-and-source-server-support-in-tfs-build-2010-beta-1.aspx</link><pubDate>Mon, 15 Jun 2009 22:14:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9754482</guid><dc:creator>JimLamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9754482.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9754482</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9754482</wfw:comment><description>&lt;p&gt;One of the really nice new features in TFS Build 2010 is support for symbol and source server. While the names “Symbol Server” and “Source Server” are somewhat misleading (there isn’t really a separate server involved), the functionality is really useful. Symbols are those *.pdb files that get generated by your builds. Those files make it possible to map execution points in your assemblies to their corresponding class and method. “Source Server” support makes it possible for the debugger to locate the correct version of the source file from the version control repository – particularly useful for server builds where the version of a file used in the build may differ from the version in your local workspace. &lt;/p&gt;  &lt;p&gt;Here are the steps for setting up symbol server with TFS Build 2010 Beta 1:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a network share to store your symbols (e.g. \\server\symbols) – the symbols beneath your drop folder are effectively copied to the symbol store location so that they’re available even if your drop folder isn’t&lt;/li&gt;    &lt;li&gt;Grant the build service account write permissions to that share &lt;/li&gt;    &lt;li&gt;Grant your team project contributors read access to that share &lt;/li&gt;    &lt;li&gt;Edit your build definition and, on the Process tab, set the &lt;strong&gt;Index Sources&lt;/strong&gt; parameter to true and the &lt;strong&gt;Path to Publish Symbols&lt;/strong&gt; parameter to the UNC path of the symbol share you created &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To use the symbols generated at build time, your users will need to do the following in Visual Studio:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Select Tools, Options from the Visual Studio 2010 main menu &lt;/li&gt;    &lt;li&gt;Expand the Debugging item in the tree and select Symbols &lt;/li&gt;    &lt;li&gt;Add the path to your symbol store (e.g. \\server\symbols) to the list of symbol file locations &lt;/li&gt;    &lt;li&gt;Select the General node beneath the Debugging node and scroll down to the “Enable source server support” check box and make sure it’s checked (it’s unchecked by default) – this will allow VS to load the appropriate version of the source file you’re debugging &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now you’ll be able to debug server builds with full symbol and source server support. You’ll also be able to do &lt;a href="http://msdn.microsoft.com/en-us/library/dd572114(VS.100,loband).aspx"&gt;historical debugging&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/ianhu/archive/2006/02/07/526835.aspx"&gt;profiling&lt;/a&gt; of server builds. Note that, by default, when a build is deleted due to a retention policy, its corresponding symbols will be deleted as well. You can, however, customize this behavior in the build definition editor’s retention tab.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;@Midas79:&lt;/strong&gt; You don’t need to install the Debugging Tools for Windows on your build machine to use this functionality. We include the required components with the build service install. Also, Aaron Hallberg has a blog post on &lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2009/06/01/writing-custom-activities-for-tfs-build-2010-beta-1.aspx"&gt;Writing Custom Activities for TFS Build 2010 Beta 1&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9754482" width="1" height="1"&gt;</description></item><item><title>Building a simple web site with VSTS/TFS 2008</title><link>http://blogs.msdn.com/jimlamb/archive/2009/04/16/building-a-simple-web-site-with-vsts-tfs-2008.aspx</link><pubDate>Fri, 17 Apr 2009 03:03:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9553629</guid><dc:creator>JimLamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9553629.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9553629</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9553629</wfw:comment><description>&lt;p&gt;I’ve been working on a web site for a local non-profit as an opportunity to spend more time with VSTS and TFS as a user. I setup TFS 2008 SP1 in a virtual machine running on my home PC and made it accessible from the public Internet. I created the web site as an ASP.net web application project and setup an automated build that uses the &lt;a href="http://www.iis.net/extensions/WebDeploymentTool"&gt;Web Deployment Tool&lt;/a&gt; to deploy the site to a staging server. I have automated unit tests running as part of the build that validate the output of each page in the site using the &lt;a href="http://validator.w3.org/"&gt;W3C Markup Validation Service&lt;/a&gt; (inspired by Damian Edwards’ excellent &lt;a href="http://damianedwards.wordpress.com/2008/10/06/adding-html-validity-checking-to-your-aspnet-web-site-via-unit-tests/"&gt;Adding HTML validity checking to your ASP.net web site via unit tests&lt;/a&gt; post). Over the course of building this web site, I learned a lot about what you can and can’t do with VSTS and TFS and I wanted to share that (somewhat painfully) acquired knowledge with you.&lt;/p&gt;  &lt;h3&gt;Using the Web Deployment Tool (MSDeploy)&lt;/h3&gt;  &lt;p&gt;The web deployment tool consists of a console application (MSDeploy) and a Windows service that runs on either the source or target location. I wanted to invoke the tool when the build succeeds, after the output has been copied to the drop location, so I overrode the AfterDropBuild target as follows:&lt;/p&gt;  &lt;pre class="prettyprint"&gt;&amp;lt;Target Name=&amp;quot;AfterDropBuild&amp;quot;&amp;gt;
  &amp;lt;Message Text=&amp;quot;This is the AfterBuild target&amp;quot; Importance=&amp;quot;normal&amp;quot;/&amp;gt;
  &amp;lt;!-- Insert other tasks to run after build here --&amp;gt;
  &amp;lt;BuildStep TeamFoundationServerUrl=&amp;quot;$(TeamFoundationServerUrl)&amp;quot;
      BuildUri=&amp;quot;$(BuildUri)&amp;quot;
      Message=&amp;quot;Deploying Website&amp;quot;
      Condition=&amp;quot;'$(IsDesktopBuild)'!='true'&amp;quot; &amp;gt;
    &amp;lt;Output TaskParameter=&amp;quot;Id&amp;quot; PropertyName=&amp;quot;InstallerStepId&amp;quot; /&amp;gt;
  &amp;lt;/BuildStep&amp;gt; 

  &amp;lt;Exec Command=&amp;quot;Deploy.cmd $(BuildDefinition) 
    &amp;amp;quot;$(DropLocation)\$(BuildNumber)\Release\_PublishedWebsites\Web&amp;amp;quot;&amp;quot;
    WorkingDirectory=&amp;quot;$(SolutionRoot)\Source\Deploy&amp;quot; /&amp;gt; 

  &amp;lt;BuildStep TeamFoundationServerUrl=&amp;quot;$(TeamFoundationServerUrl)&amp;quot;
    BuildUri=&amp;quot;$(BuildUri)&amp;quot; 
    Id=&amp;quot;$(InstallerStepId)&amp;quot; 
    Status=&amp;quot;Succeeded&amp;quot; 
    Condition=&amp;quot;'$(IsDesktopBuild)'!='true'&amp;quot; /&amp;gt; 

    &amp;lt;OnError ExecuteTargets=&amp;quot;DeploymentFailed&amp;quot; /&amp;gt;
  &amp;lt;/Target&amp;gt;

  &amp;lt;Target Name=&amp;quot;DeploymentFailed&amp;quot;&amp;gt;
    &amp;lt;!-- Called if deployment of the web site fails --&amp;gt;
    &amp;lt;BuildStep TeamFoundationServerUrl=&amp;quot;$(TeamFoundationServerUrl)&amp;quot;
      BuildUri=&amp;quot;$(BuildUri)&amp;quot;
      Id=&amp;quot;$(InstallerStepId)&amp;quot;
      Status=&amp;quot;Failed&amp;quot;
      Condition=&amp;quot;'$(IsDesktopBuild)'!='true'&amp;quot; /&amp;gt;
&amp;lt;/Target&amp;gt;&lt;/pre&gt;

&lt;p&gt;You’ll notice that the Exec command invokes a command script. I’m not doing anything in that command script that you couldn’t do in MSBuild, but I’m a little more comfortable with batch files, so I chose to implement the deployment steps there as follows:&lt;/p&gt;

&lt;pre&gt;@echo off
if not %1==FarmersMarket-Nightly goto DEBUG

echo Deploying to production server...
&amp;quot;%ProgramFiles%\IIS\Microsoft Web Deploy\msdeploy.exe&amp;quot; 
  -verb:sync -source:contentPath=&amp;quot;%2&amp;quot; 
  -dest:contentPath=C:\Inetpub\wwwroot\FarmersMarket,
    computerName=domain.com,username=domain\user,password=******** &amp;gt; 
    &amp;quot;%2\..\..\..\DeploymentLog.txt&amp;quot;

goto :EOF

:DEBUG
echo Deploying to stage server...
cscript %SystemRoot%\System32\iisweb.vbs /stop &amp;quot;Stage-WesternWakeFarmersMarket&amp;quot;
&amp;quot;%ProgramFiles%\Windows Resource Kits\Tools\robocopy&amp;quot; 
  &amp;quot;%2&amp;quot; C:\Stage\FarmersMarket *.* /E /MIR &amp;gt; &amp;quot;%2\..\..\..\DeploymentLog.txt&amp;quot;
cscript %SystemRoot%\System32\iisweb.vbs /start &amp;quot;Stage-WesternWakeFarmersMarket&amp;quot;&lt;/pre&gt;

&lt;p&gt;Usernames and passwords have, of course, been replaced with placeholder text. You’ll notice that it branches based on the name of the build definition. My continuous integration build uses &lt;a href="http://en.wikipedia.org/wiki/Robocopy"&gt;robocopy&lt;/a&gt; to deploy the build to a test site on my TFS machine while my nightly uses msdeploy to deploy to my remote production server. &lt;/p&gt;

&lt;h3&gt;Managing the Data (or not?)&lt;/h3&gt;

&lt;p&gt;At this point, you may be wondering how I’m deploying the database. You may be disappointed to learn that, despite the fact that the msdeploy does support deployment of SQL Server database schemas, I consciously chose to avoid taking a dependency on a database at all. Instead, I chose to you a free blogging service as the ‘backing store’ for my site. I use the Syndication classes in .NET 3.5 to grab content from various feeds I’ve setup and render it on the site after caching it on the server with a rolling timeout. That single decision substantially simplified my deployment requirements. Even better, I can now make updates to much of the site’s content using my &lt;a href="http://windowslivewriter.spaces.live.com/"&gt;favorite blogging tool&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Automated Markup Validation&lt;/h3&gt;

&lt;p&gt;For my automated unit tests, I simply wanted to validate the XHTML generated by my pages to make sure that I hadn’t broken anything with my changes. Fortunately, Damian Edwards had already done the heavy lifting in this regard and I only needed to make some minor changes to meet my needs. Because I’m choosing to validate each page with an individual test method, I was able to leverage the TestContext object rather than pass in the name of the page to validate to the helper class. Here’s what my test method looks like:&lt;/p&gt;

&lt;pre class="prettyprint"&gt;[TestMethod()]
[HostType(&amp;quot;ASP.NET&amp;quot;)]
[AspNetDevelopmentServerHost(&amp;quot;%SolutionDir%\\Web&amp;quot;)]
[UrlToTest(&amp;quot;http://localhost/default.aspx&amp;quot;)]
[DeploymentItem(&amp;quot;Web.dll&amp;quot;)]
public void ValidateHomePage()
{
  Assert.IsTrue(TestHelper.ReturnsValidHtml(this.TestContext).IsValid,
    String.Format(Resources.W3CValidationFailure,
      TestContext.RequestedPage.AppRelativeVirtualPath));
} &lt;/pre&gt;

&lt;p&gt;I’ve omitted the test description in the interest of brevity. Also note the user of the %SolutionDir% property where I specify the server host and the missing port number in the UrlToTest attribute (turns out that MSTest will fix-up the port number to match the one dynamically assigned to the web development server). &lt;/p&gt;

&lt;p&gt;The next thing I tried was to turn on code coverage. I was surprised to discover that I had to build x86 assemblies in order to get code coverage data. I currently target “Any CPU” since my staging server (also my TFS) is running 32-bit Windows Server 2003 and my production server is running 64-bit Windows Server 2003. Fortunately, that particular gap is addressed in TFS 2010 and you’ll be able to capture code coverage data regardless of whether you’re targeting x86 or amd64.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;If you’re interested in checking out my little side project, it’s a web site for the &lt;a href="http://www.westernwakefarmersmarket.org/"&gt;Western Wake Farmers’ Market&lt;/a&gt;. Please keep in mind that I’ve radically simplified this project in order to scope it down to something that I could realistically deliver by setting aside just a few hours a week.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9553629" width="1" height="1"&gt;</description></item><item><title>Resources for Building ASP.net Applications with VSTS/TFS</title><link>http://blogs.msdn.com/jimlamb/archive/2009/02/12/resources-for-building-asp-net-applications-with-vsts-tfs.aspx</link><pubDate>Fri, 13 Feb 2009 01:20:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9416037</guid><dc:creator>JimLamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9416037.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9416037</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9416037</wfw:comment><description>&lt;p&gt;I often hear that our customers hit challenges when developing ASP.net applications with VSTS and TFS. I’d like to kick off a dialog with a goal of identifying the key pain points so that we can deliver guidance to eliminate, or at least mitigate that pain.&lt;/p&gt;  &lt;h4&gt;Managing Web Application Sources in TFS Version Control&lt;/h4&gt;  &lt;p&gt;Our Patterns &amp;amp; Practices team has a guide on how to &lt;a href="http://msdn.microsoft.com/en-us/library/bb668986.aspx"&gt;Structure ASP.net Applications in TFS&lt;/a&gt;. It was, however, originally written for TFS 2005 and assumes that you’re working with a Web Site Project rather than a Web Application Project (see below). Fortunately, working with Web Application Projects in version control is straightforward since they are structured like most other common project systems in Visual Studio. You may also want to review &lt;a href="http://www.codeplex.com/TFSGuide"&gt;Team Development with TFS&lt;/a&gt; and the &lt;a href="http://www.codeplex.com/TFSBranchingGuideII"&gt;TFS Branching Guide 2.0&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Generally, you won’t want developers publishing changes to an instance of your ASP.net application directly from their machines unless that instance is in their own personal sandbox. Rather, the automated build should deploy the application to a test or staging environment as appropriate (more on deployment later in this post). Also, be sure to &lt;a href="http://www.csharper.net/blog/using_the_tilde__~__in_asp_net_everywhere___not_just_controls_.aspx"&gt;use the tilde&lt;/a&gt; (~) in virtual paths referenced in server controls rather than referencing a specific server name so that those paths will resolve correctly on everyone’s machine (including the build machine).&lt;/p&gt;  &lt;h4&gt;Web Application Projects vs. Web Site Projects&lt;/h4&gt;  &lt;p&gt;Visual Studio 2005 introduced a new, and somewhat controversial Web Project System that’s now commonly referred to as “Web Site Projects.” Scott Guthrie has provided a &lt;a href="http://weblogs.asp.net/scottgu/archive/2005/08/21/423201.aspx"&gt;thorough overview&lt;/a&gt; of that project system. Unfortunately, Web Site Projects are not directly supported by MSBuild and Scott’s original recommendation was to add a “build helper project” to the same solution that you would customize to implement your build process. For many users, however, this solution was less than ideal and in response to customer feedback, the ASP.net team &lt;a title="ScottGu&amp;#39;s Blog" href="http://weblogs.asp.net/scottgu/archive/2006/05/08/445742.aspx"&gt;released Web Application Projects&lt;/a&gt; in May 2006.&lt;/p&gt;  &lt;p&gt;In Visual Studio 2005, &lt;a title="Introduction to Web Application Projects on MSDN" href="http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx"&gt;Web Application Projects&lt;/a&gt; are compiled into a single assembly using an MSBuild-based compilation process. This made it much easier to migrate Visual Studio 2003 web projects to Visual Studio 2005 (and .NET 2.0) while making it possible to &lt;a href="http://forums.asp.net/p/988775/1279716.aspx"&gt;build ASP.net 2.0 projects with Team Foundation Server 2005&lt;/a&gt;. Visual Studio 2008 included support for both Web Site Projects and Web Application Projects leaving it up to the user to decide which was the best fit for their needs. Maor David provides a &lt;a href="http://blogs.microsoft.co.il/blogs/maordavid/archive/2007/06/03/ASP.NET-2.0-_2D00_-Web-Site-vs-Web-Application-project.aspx"&gt;succinct summary&lt;/a&gt; of when to use which model. Rick Strahl shares his experiences with transitioning to &lt;a href="http://www.west-wind.com/WebLog/posts/5601.aspx"&gt;Web Site Projects and Web Deployment Projects&lt;/a&gt; in greater depth.&lt;/p&gt;  &lt;h4&gt;ASP.net Application Deployment&lt;/h4&gt;  &lt;p&gt;In parallel with the evolution of the ASP.net project system, users were looking for ways to simplify and, ideally, fully automate deployment of their web applications. There were competent &lt;a title="Unleash it" href="http://www.eworldui.net/unleashit/"&gt;third-party solutions&lt;/a&gt; for Visual Studio 2003, but there wasn’t anything in-the-box with Visual Studio 2005. The ASP.net team partially addressed this need with &lt;a href="http://msdn.microsoft.com/en-us/asp.net/aa336619.aspx"&gt;Web Deployment Projects&lt;/a&gt; which was meant to prepare your application for deployment via the &lt;a title="Video [WMV]" href="http://static.asp.net/asp.net/videos/pss/copysite.wmv"&gt;Copy Web Site&lt;/a&gt; or &lt;a title="Improvements in Visual Studio 2005 (www.asp.net)" href="http://www.asp.net/LEARN/moving-to-asp.net-2.0/module-01.aspx"&gt;Publish Web Site&lt;/a&gt; features. Deployment Projects weren’t included with Visual Studio 2008, but &lt;a title="ScottGu&amp;#39;s Blog" href="http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx"&gt;support was released in January 2008&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a title="Using Web Deployment Projects with Visual Studio 2005" href="http://msdn.microsoft.com/en-us/library/aa479568.aspx"&gt;Web Deployment Projects can be used&lt;/a&gt; with either “Web Site” or “Web Application” projects in Visual Studio 2005 and 2008. Scott Guthrie has a tutorial on &lt;a title="ScottGu&amp;#39;s Blog" href="http://weblogs.asp.net/scottgu/archive/2005/11/06/429723.aspx"&gt;VS 2005 Web Deployment Projects&lt;/a&gt; which also applies to Visual Studio 2008, though there are some &lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/01/25/announcing-rtw-of-visual-studio-2008-web-deployment-projects-wdp.aspx"&gt;new features in the 2008 version&lt;/a&gt;. There are, however, issues with &lt;a title="Aaron Hallberg&amp;#39;s Blog" href="http://blogs.msdn.com/aaronhallberg/archive/2007/07/02/team-build-and-web-deployment-projects.aspx"&gt;Team Build and Web Deployment Projects&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Deployment continued to be a pain point for ASP.net developers and Microsoft broadened its efforts to simplify the process by partnering with the IIS team. As of this writing, Beta 2 of the &lt;a title="Official Web Deployment Tool Home Page" href="http://www.iis.net/extensions/WebDeploymentTool"&gt;Web Deployment Tool&lt;/a&gt; is available for download (in &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1602"&gt;x86&lt;/a&gt; and &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1603"&gt;x64&lt;/a&gt; flavors). This tool creates a package that contains “content, configuration and SQL databases for deployment or sharing with others.” It supports IIS 6.0 and 7.0 and is &lt;a title="Visual Web Developer Team Blog" href="http://blogs.msdn.com/webdevtools/archive/2009/02/04/web-deployment-with-vs-2010-and-iis.aspx"&gt;included with Visual Studio 2010&lt;/a&gt; as well as the &lt;a href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx"&gt;Web Platform Installer&lt;/a&gt;. We are actively working with the ASP.net and IIS teams to make sure that this tool will work well for teams using Team System and Team Foundation Server.&lt;/p&gt;  &lt;h4&gt;Building ASP.net Applications with TFS&lt;/h4&gt;  &lt;p&gt;There are a number of things to keep in mind when building ASP.net applications with TFS 2008. You’ll generally want to install the Development and Test Editions of Visual Studio Team System (or Team Suite). With regard to licenses, your &lt;a href="http://blogs.msdn.com/jeffbe/archive/2008/03/18/licensing-team-system-editions-for-your-build-machine.aspx"&gt;build machine doesn’t need licenses&lt;/a&gt; for these (or any) editions of Team System so long as the person creating the build definition in TFS does. You will, however, need a TFS CAL for the build machine. Having the Development and Test Editions installed on the same machine as the Build Agent will enable you to run unit tests and perform code analysis as part of your automated build.&lt;/p&gt;  &lt;p&gt;If you are using VSTS/TFS 2005, be sure to apply Visual Studio 2005 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&amp;amp;DisplayLang=en"&gt;Team System SP1&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A9AB638C-04D2-4AEE-8AE8-9F00DD454AB8&amp;amp;displaylang=en"&gt;Team Foundation Server SP1&lt;/a&gt;, which includes support for Web Application Projects, to your build machines. If you encounter error MSB4019, you will need to &lt;a href="http://msdn.technetweb3.orcsweb.com/buckh/archive/2006/05/22/web-application-project-tfs.aspx"&gt;manually copy a targets file&lt;/a&gt; to your build machine. You will also want to install &lt;a href="http://msdn.microsoft.com/en-us/asp.net/aa336619.aspx"&gt;Web Deployment Projects for VS 2005&lt;/a&gt; on the build machine if you plan to use deployment projects. If you’re using VSTS/TFS 2008, Web Application Project support is included with the Development and Team Suite Editions of VSTS, but you’ll need to install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&amp;amp;displaylang=en"&gt;Web Deployment Projects for VS 2008&lt;/a&gt; on the build machine to successfully build those.&lt;/p&gt;  &lt;p&gt;If you plan to run automated unit tests of your web application as part of your automated build process, you may want to familiarize yourself with the development web server that’s included with Visual Studio. Team Build uses it to run automated tests for ASP.net applications. It differs from IIS in some significant ways, like &lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2008/11/07/tip-21-did-you-know-how-to-set-a-fixed-port-for-the-developer-web-server.aspx"&gt;dynamically selecting a port to run on&lt;/a&gt;. Note that it’s also possible to &lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2008/11/04/tip-20-did-you-know-how-to-change-wap-to-use-an-iis-web-server.aspx"&gt;switch between IIS and the Developer Web Server&lt;/a&gt; in your Web Application Project. Brian Orrell has a concise example of how to &lt;a href="http://blogs.parivedasolutions.com/borrell/archive/2007/05/20/441.aspx"&gt;unit test ASP.net pages with Team Build&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you work with Web Site Projects and Web Application Projects you may have noticed that they have different default platforms (“.NET” for Web Site Projects and “Any CPU” for Web Application Projects). Team Build deals with &lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2007/06/25/solution-configurations.aspx"&gt;solution configurations&lt;/a&gt; which map to distinct configuration and platform for each project within that solution. You’ll want to make sure that the Team Build project file (TFSBuild.proj) is configured to build the “Any CPU” flavor of your configuration. Joel Semeniuk talks more about configurations in his blog post on &lt;a href="http://weblogs.asp.net/jsemeniuk/archive/2005/11/29/431842.aspx"&gt;Automating Web Site Builds with Team Build&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Where do we go from here?&lt;/h4&gt;  &lt;p&gt;What pain points have you encountered with ASP.net applications and TFS? Let me know either by posting a comment here or by &lt;a href="http://blogs.msdn.com/jimlamb/contact.aspx"&gt;contacting me directly&lt;/a&gt; and I’ll do my best to help you find a solution. Of course you can also post your question on the &lt;a href="http://social.msdn.microsoft.com/forums/en-US/tfsbuild/threads/"&gt;Build Automation MSDN Forum&lt;/a&gt;, which my teammates and I visit on a regular basis.&lt;/p&gt;  &lt;h4&gt;Summary of Links&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/TFSGuide"&gt;Team Development with Visual Studio Team Foundation Server&lt;/a&gt; – &lt;em&gt;Patterns &amp;amp; Practices&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/TFSBranchingGuideII"&gt;TFS 2008 Branching Guide 2.0&lt;/a&gt; – &lt;em&gt;CodePlex&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.csharper.net/blog/using_the_tilde__~__in_asp_net_everywhere___not_just_controls_.aspx"&gt;Using the Tilde (~) in ASP.NET Everywhere&lt;/a&gt; – &lt;em&gt;C# Shiznit&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2005/08/21/423201.aspx"&gt;VS 2005 Web Project System: What is it and why did we do it?&lt;/a&gt; – &lt;em&gt;ScottGu’s Blog&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2006/05/08/445742.aspx"&gt;VS 2005 Web Application Project V1.0 Released&lt;/a&gt; – &lt;em&gt;ScottGu’s Blog&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx"&gt;Introduction to Web Application Projects&lt;/a&gt; – &lt;em&gt;Visual Studio 2005 Developer Center&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/p/988775/1279716.aspx"&gt;FAQ and Known Issues Web Application Projects&lt;/a&gt; – &lt;em&gt;ASP.net Forums&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/maordavid/archive/2007/06/03/ASP.NET-2.0-_2D00_-Web-Site-vs-Web-Application-project.aspx"&gt;ASP.net 2.0 – Web Site vs. Web Application project&lt;/a&gt; – &lt;em&gt;Maor David&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.west-wind.com/WebLog/posts/5601.aspx"&gt;Web Application Projects and Web Deployment Projects are here&lt;/a&gt; – &lt;em&gt;Rick Strahl’s Web Log&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.eworldui.net/unleashit/"&gt;Unleash it&lt;/a&gt; – eXcentrics world&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/asp.net/aa336619.aspx"&gt;Visual Studio 2005 Web Deployment Projects&lt;/a&gt; – &lt;em&gt;ASP.net Developer Center&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://static.asp.net/asp.net/videos/pss/copysite.wmv"&gt;Copy Web Site Feature in Visual Studio 2005&lt;/a&gt; [WMV] – &lt;em&gt;Jim Cheshire&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/LEARN/moving-to-asp.net-2.0/module-01.aspx"&gt;Improvements in Visual Studio 2005&lt;/a&gt; – ASP.net&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx"&gt;VS 2008 Web Deployment Project Support Released&lt;/a&gt; – &lt;em&gt;ScottGu’s Blog&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa479568.aspx"&gt;Using Web Deployment Projects with Visual Studio 2005&lt;/a&gt; – &lt;em&gt;.NET Framework Developer Center&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2005/11/06/429723.aspx"&gt;VS 2005 Web Deployment Projects&lt;/a&gt; – &lt;em&gt;ScottGu’s Blog&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/01/25/announcing-rtw-of-visual-studio-2008-web-deployment-projects-wdp.aspx"&gt;Announcing RTW version of Visual Studio 2008 Web Deployment Projects&lt;/a&gt; – &lt;em&gt;Visual Web Developer Team Blog&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2007/07/02/team-build-and-web-deployment-projects.aspx"&gt;Team Build and Web Deployment Projects&lt;/a&gt; – &lt;em&gt;Aaron Hallberg&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.iis.net/extensions/WebDeploymentTool"&gt;Web Deployment Tool&lt;/a&gt; – Internet Information Services (IIS.net)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/02/04/web-deployment-with-vs-2010-and-iis.aspx"&gt;Web Deployment with VS 2010 and IIS&lt;/a&gt; – &lt;em&gt;Visual Web Developer Team Blog&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx"&gt;Microsoft Web Platform Installer 1.0&lt;/a&gt; – &lt;em&gt;Microsoft.com&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/learn/vsts-videos/video-176.aspx"&gt;How do I: Deploy a Web Application during a Team Build?&lt;/a&gt; – &lt;em&gt;Paul Hacker&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb671360.aspx"&gt;How To – Structure Your ASP.net Projects for TFS&lt;/a&gt; – &lt;em&gt;J.D. Meier, Jason Taylor, Prashant Bansode&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668986.aspx"&gt;How To: Structure ASP.net Applications in Visual Studio Team Foundation Server&lt;/a&gt; – &lt;em&gt;J.D. Meier, Prashant Bansode, Alex Mackman, and Kevin Jones&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/hosamkamel/archive/2008/11/20/asp-net-mvc-project-and-team-build-issue.aspx"&gt;ASP.net MVC Project and TFS Team Build Issue&lt;/a&gt; – &lt;em&gt;Hosam Kamel&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.parivedasolutions.com/borrell/archive/2007/05/20/441.aspx"&gt;Unit Test ASP.net Pages with Team Build&lt;/a&gt; – &lt;em&gt;Brian Orrell&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2008/11/04/tip-20-did-you-know-how-to-change-wap-to-use-an-iis-web-server.aspx"&gt;Tip #20: Did you know… How to change WAP to use an IIS Web server?&lt;/a&gt; – &lt;em&gt;Web Developer Tips&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2008/11/07/tip-21-did-you-know-how-to-set-a-fixed-port-for-the-developer-web-server.aspx"&gt;Tip #21: Did you know… How to set a fixed port for the Developer Web Server&lt;/a&gt; – &lt;em&gt;Web Developer Tips&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2008/11/15/tip-24-did-you-know-you-could-display-css-html-errors-as-warnings-or-as-errors.aspx"&gt;Tip #24: Did you know… You could display CSS/HTML errors as warnings or errors?&lt;/a&gt; – &lt;em&gt;Web Developer Tips&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2007/06/25/solution-configurations.aspx"&gt;Solution Configurations&lt;/a&gt; – &lt;em&gt;Aaron Hallberg&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/jsemeniuk/archive/2005/11/29/431842.aspx"&gt;Automating Web Site Builds with Team Build&lt;/a&gt; – &lt;em&gt;Joel Semeniuk&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9416037" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Build/default.aspx">Build</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Whidbey/default.aspx">Whidbey</category></item><item><title>Improving Build Performance in TFS 2008</title><link>http://blogs.msdn.com/jimlamb/archive/2009/02/10/improving-build-performance-in-tfs-2008.aspx</link><pubDate>Tue, 10 Feb 2009 15:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9410470</guid><dc:creator>JimLamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9410470.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9410470</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9410470</wfw:comment><description>&lt;p&gt;There are a number of things you can do to improve build performance in TFS 2008:&lt;/p&gt;  &lt;ul&gt;   &lt;li style="padding-bottom: 0.5em"&gt;Reduce the scope of the &lt;i&gt;Get&lt;/i&gt; as much as possible by fine-tuning the workspace mapping. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Reduce the verbosity of the MSBulid logger (defaults to “diagnostic” in .NET 3.5) by adding the following to your TfsBuild.rsp file: “/flp:verbosity=normal”. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Review these &lt;a href="http://channel9.msdn.com/wiki/msbuild/speedupbigbuilds/Default.aspx?wa=wsignin1.0-How"&gt;tips on speeding up large builds&lt;/a&gt; from Channel9. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Set the &lt;i&gt;IncrementalGet&lt;/i&gt; property to True in TFSBuild.proj if you’re OK with re-using sources across builds. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Set the &lt;i&gt;IncrementalBuild&lt;/i&gt; property to True if you’re OK with re-using outputs across builds. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Turn on &lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2007/06/20/team-build-and-multiproc-msbuild.aspx" mce_href="http://blogs.msdn.com/aaronhallberg/archive/2007/06/20/team-build-and-multiproc-msbuild.aspx"&gt;MSBuild multiproc support&lt;/a&gt; to get parallelization of solution builds – works best on Build Agents with multi-core processors. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Install SP1 and the &lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2009/01/30/targetsnotlogged-hotfix-available.aspx" mce_href="http://blogs.msdn.com/aaronhallberg/archive/2009/01/30/targetsnotlogged-hotfix-available.aspx"&gt;TargetsNotLogged Hotfix&lt;/a&gt; on your Build Agents to reduce noise in the build logs. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;If you’re using a TFS proxy, configure your Build Agent to use it too by following &lt;a href="http://blogs.msdn.com/buckh/archive/2007/03/07/configuring-the-build-to-use-the-version-control-proxy.aspx" mce_href="http://blogs.msdn.com/buckh/archive/2007/03/07/configuring-the-build-to-use-the-version-control-proxy.aspx"&gt;this post&lt;/a&gt; (but substituting 9.0 for 8.0): &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Consider partitioning the build process into multiple build definitions, e.g. (a) an incremental continuous integration build that just validates the latest changeset without copying a drop, and (b) a clean nightly build that builds that same label as the last good CI build and runs a suite of automated tests. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Schedule disk defragmentation on your build agents – if you do continuous integration and nightly builds, it might be best to schedule defragmentation for the weekend. &lt;/li&gt;    &lt;li style="padding-bottom: 0.5em"&gt;Use build machines with fast hard drives – upgrading to a newer, faster hard drive is a relatively cheap way to improve build performance. The performance of &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822136283" mce_href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822136283"&gt;WD’s 750 GB 7200 RPM drive&lt;/a&gt; is very close to the fastest mechanical hard drives available at less than $100. &lt;/li&gt;    &lt;li&gt;Use a Server (not a Workstation) OS to host the drop folders – e.g. Windows Server 2003 rather than XP. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Have any good tips on improving build performance? Please share them by posting a comment here.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Update: William Bartholomew has a two great posts on build performance:&amp;#160; &lt;a href="http://blogs.teamsystemnotes.com/2009/03/19/monitoring-build-performance/"&gt;Monitoring Build Performance&lt;/a&gt; and &lt;/em&gt;&lt;a href="http://blogs.teamsystemnotes.com/2009/03/19/drilling-into-build-performance/"&gt;&lt;em&gt;Drilling into Build Performance&lt;/em&gt;&lt;/a&gt;&lt;em&gt; – March 19, 2009.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9410470" width="1" height="1"&gt;</description></item><item><title>Coming soon – Gated Check-in</title><link>http://blogs.msdn.com/jimlamb/archive/2009/01/23/coming-soon-gated-check-in.aspx</link><pubDate>Sat, 24 Jan 2009 01:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9373298</guid><dc:creator>JimLamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9373298.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9373298</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9373298</wfw:comment><description>&lt;P&gt;&lt;EM&gt;This is the first in a series of planned blog posts on new features coming in Team Foundation Build 2010.&lt;/EM&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;Team Foundation Build 2010 includes a new feature that lets you reject check-ins if the associated changes cannot be successfully (and automatically) merged with the current sources and built using a build definition with a new trigger. Changes that do merge and build successfully are committed to the version control repository on behalf of the user who originally submitted the check-in. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Configuring a Build Definition for Gated Check-in&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Gated check-in is exposed as a new trigger type in the Build Definition editor. In the same way that you would enable continuous integration, you can enable gated check-in. When you do, be sure to review the workspace mapping associated with the build definition. Any check-in that affects that workspace mapping will be intercepted at the server and shelved (after prompting the user on the client-side for confirmation). &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Gated Check-in Data Flow&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/ComingsoonGatedCheckin_F974/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/ComingsoonGatedCheckin_F974/image_4.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=443 alt=image src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/ComingsoonGatedCheckin_F974/image_thumb_1.png" width=600 border=0 mce_src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/ComingsoonGatedCheckin_F974/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Caveats, Provisos, etc.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;There are some edge cases to be aware of when using gated check-in:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;If you have two build definitions with overlapping workspace mappings that are both gated and a user submits a check-in that affects them both, the user will get to pick which one gets built to verify their changes. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;If the changes merge and build successfully, they get committed to the repository. This leaves the user’s local workspace in a state where they have pending changes that have actually already been committed. There is an “Update Workspace” command that fixes up their workspace to clear the pending state from those changes but it can create some confusion. It’s also important to note that, due to the automatic merge, the changes that get committed may not be identical to the changes the user submitted. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Builds triggered by gated check-ins are serialized so that only one build of a gated build definition can execute at a time (even within a pool of build resources). This was done to preclude the possibility of conflicting changes getting submitted. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here’s a somewhat dated, though still informative, video walkthrough of the gated check-in feature:&lt;/P&gt;
&lt;DIV class=wlWriterEditableSmartContent id=scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7817b42a-4ff7-47fa-a376-4583079156bf style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;DIV id=b8d66136-fff9-45de-b9f6-7ad2e0f9d007 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;DIV&gt;&lt;A href="http://video.msn.com/video.aspx?vid=4ffe2c3e-c866-49e6-8d0b-e7e1e443e30c&amp;amp;from=writer" target=_new mce_href="http://video.msn.com/video.aspx?vid=4ffe2c3e-c866-49e6-8d0b-e7e1e443e30c&amp;amp;from=writer"&gt;&lt;IMG style="BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" alt="" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/ComingsoonGatedCheckin_F974/video657f2f64fcdc.jpg" onload="var downlevelDiv = document.getElementById('b8d66136-fff9-45de-b9f6-7ad2e0f9d007'); downlevelDiv.innerHTML = &amp;quot;&lt;div&gt;&lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=4ffe2c3e-c866-49e6-8d0b-e7e1e443e30c&amp;amp;from=writer&amp;amp;mkt=en-US\&amp;quot; &gt;&lt;\/embed&gt;&lt;\/div&gt;&amp;quot;;" galleryimg="no" mce_src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/ComingsoonGatedCheckin_F974/video657f2f64fcdc.jpg"&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9373298" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/screencast/default.aspx">screencast</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Rosario/default.aspx">Rosario</category></item><item><title>Building “Classic ASP” applications with TFS 2008</title><link>http://blogs.msdn.com/jimlamb/archive/2009/01/13/building-classic-asp-applications-with-tfs-2008.aspx</link><pubDate>Tue, 13 Jan 2009 20:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9316249</guid><dc:creator>JimLamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9316249.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9316249</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9316249</wfw:comment><description>&lt;p&gt;As far as VS 2005 or VS 2008 are concerned, “Classic ASP” applications are just text files. You can edit them and you can check them in and out of version control. When people ask about managing “Classic ASP” applications with VSTS/TFS, they’re usually asking about how they should manage the VB6 components. Here’s what I recommend for VSTS/TFS 2008:&lt;/p&gt;  &lt;ul&gt;   &lt;li style="margin-bottom: 1em"&gt;Download and install the latest &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FAEB7636-644E-451A-90D4-7947217DA0E7&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FAEB7636-644E-451A-90D4-7947217DA0E7&amp;amp;displaylang=en"&gt;MSSCCI provider&lt;/a&gt; for TFS 2008. This release lets the following clients perform version control operations against TFS: Visual Studio.NET 2003, Visual C++ 6 SP6, Visual Basic 6 SP6, Visual FoxPro 9 SP1, Access 2003 SP2, SQL Server 2005 Management Studio, Sparx Systems Enterprise Architect 6.1, Sybase PowerBuilder 10.5 and Toad for SQL Server 2.0.       &lt;br /&gt;      &lt;br /&gt;&lt;i&gt;Note: If you have an earlier version of the MSSCCI provider installed, be sure to uninstall it before installing this version.&lt;/i&gt; &lt;/li&gt;    &lt;li style="margin-bottom: 1em"&gt;Check the “Classic ASP” application sources into TFS 2008 version control.      &lt;br /&gt;&lt;/li&gt;    &lt;li style="margin-bottom: 1em"&gt;Create a TFSBuild.proj file to build the application and check it into version control. You’ll need to create this file manually since the Project File Wizard in Team Explorer only lets you target Visual Studio 2008 solutions and projects. The project file would look something like this:      &lt;br /&gt;      &lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;Project xmlns=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&amp;gt;
  &amp;lt;Import Project=&amp;quot;$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets&amp;quot; /&amp;gt;

  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;VB6&amp;gt;$(ProgramFiles)\Microsoft Visual Studio\VB98\VB6.exe&amp;lt;/VB6&amp;gt;
    &amp;lt;VB6Output&amp;gt;$(BinariesRoot)\VB6\&amp;lt;/VB6Output&amp;gt;
    &amp;lt;VB6Timeout&amp;gt;150000&amp;lt;/VB6Timeout&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;
 
  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;ProjectToBuild Include=&amp;quot;$(SolutionRoot)\Source\[ApplicationDirectory]\{application].vbp&amp;quot;/&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;
 
  &amp;lt;Target Name=&amp;quot;AfterCompile&amp;quot;&amp;gt;
 
    &amp;lt;Message Text=&amp;quot;CompileProject: %(ProjectToBuild.Identity)&amp;quot;/&amp;gt;
    &amp;lt;MakeDir Directories=&amp;quot;$(VB6Output)&amp;quot; Condition=&amp;quot;!Exists('$(VB6Output)')&amp;quot;/&amp;gt;
 
    &amp;lt;Exec Condition=&amp;quot; '@(ProjectToBuild)'!='' &amp;quot;
       Command=&amp;quot;&amp;amp;quot;$(VB6)&amp;amp;quot; /m &amp;amp;quot;%(ProjectToBuild.Identity)&amp;amp;quot; /outdir &amp;amp;quot;$(VB6Output)&amp;amp;quot; /out &amp;amp;quot;$(VB6Output)VB6.log&amp;amp;quot;&amp;quot;
       Timeout=&amp;quot;$(VB6Timeout)&amp;quot;/&amp;gt;
 
  &amp;lt;/Target&amp;gt;
&amp;lt;/Project&amp;gt;&lt;/pre&gt;

    &lt;p&gt;Thanks to &lt;a href="http://woodwardweb.com/"&gt;Martin Woodward&lt;/a&gt; (Team System MVP) of &lt;a href="http://www.teamprise.com/"&gt;Teamprise&lt;/a&gt; (provider of cross-platform TFS clients) for his suggestions to include the import of the Team Build targets file and to override the AfterCompile target. Of course, you can customize your project file as necessary to meet your requirements. Be sure to check out the &lt;a href="http://www.codeplex.com/MSBuildExtensionPack" mce_href="http://www.codeplex.com/MSBuildExtensionPack"&gt;MSBuild Extension Pack&lt;/a&gt;, &lt;a href="http://www.codeplex.com/sdctasks" mce_href="http://www.codeplex.com/sdctasks"&gt;Microsoft SDC Tasks&lt;/a&gt;, and the &lt;a href="http://msbuildtasks.tigris.org/" mce_href="http://msbuildtasks.tigris.org/"&gt;MSBuild Community Tasks Project&lt;/a&gt; for a number of helpful custom MSBuild tasks.&lt;/p&gt;
  &lt;/li&gt;

  &lt;li style="margin-bottom: 1em"&gt;
    &lt;p&gt;Create a new build definition and, on the &lt;b&gt;Project File&lt;/b&gt; page, browse to the TFSBuild.proj file you just checked into version control. 

      &lt;br /&gt;

      &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="Project File" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BuildingClassicASPapplicationswithTFS200_B195/image_thumb.png" width="550" height="387" mce_src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BuildingClassicASPapplicationswithTFS200_B195/image_thumb.png" /&gt; &lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;Queue a build of your newly created build definition and you should have a good build of your VB6 components. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That should put you well on your way towards building a “Classic ASP” application with VSTS/TFS 2008. Please let me know if you have any questions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I used an &lt;/em&gt;&lt;a href="http://www.htmlescape.net/htmlescape_tool.html"&gt;&lt;em&gt;Online HTML escape tool&lt;/em&gt;&lt;/a&gt;&lt;em&gt; to escape the project file snippet and &lt;/em&gt;&lt;a href="http://code.google.com/p/google-code-prettify/"&gt;&lt;em&gt;Google Prettify&lt;/em&gt;&lt;/a&gt;&lt;em&gt; to do the syntax highlighting.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9316249" width="1" height="1"&gt;</description></item><item><title>TFS 2008 – HP Quality Center Connector December Pre-release</title><link>http://blogs.msdn.com/jimlamb/archive/2009/01/06/tfs-2008-hp-quality-center-connector-december-pre-release.aspx</link><pubDate>Wed, 07 Jan 2009 01:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9286354</guid><dc:creator>JimLamb</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9286354.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9286354</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9286354</wfw:comment><description>&lt;P&gt;The TFS product team has been working with Hewlett Packard’s (HP) Quality Center team to develop the TFS 2008 – HP Quality Center (QC) Connector. It lets Quality Center 9.2 users synchronize their Defects with Work Items in TFS 2008. This synchronization can be performed interactively with a Windows (GUI) application or as a background task (running as a service). The Connector is built on the &lt;A href="http://www.codeplex.com/MigrationSyncToolkit" mce_href="http://www.codeplex.com/MigrationSyncToolkit"&gt;TFS Synchronization Toolkit&lt;/A&gt; and is available for download from &lt;A href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=628" mce_href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=628"&gt;Microsoft Connect&lt;/A&gt; (registration with the Connect site is required).&lt;/P&gt;
&lt;P&gt;&lt;IMG title=QCConnector style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=298 alt=QCConnector src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/TFS2008HPQualityCenterConnectorDecemberP_F89D/QCConnector_thumb_3.png" width=550 border=0&gt; &lt;/P&gt;
&lt;P&gt;Along with the installer for the QC Connector, we’ve included a &lt;A href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=628&amp;amp;DownloadID=14738" mce_href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=628&amp;amp;DownloadID=14738"&gt;Getting Started&lt;/A&gt; (registration required) guide that explains the prerequisites, installation, configuration and usage of the Connector. There’s also a ZIP file containing a sample XML configuration file and a custom process template designed to sync with the demo project included with Quality Center 9.2. The sample configuration file and process template illustrate the following &lt;STRONG&gt;features&lt;/STRONG&gt; of the Connector:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Synchronize Quality Center 9.2 Defects with TFS 2008 Bugs&lt;/LI&gt;
&lt;LI&gt;Map enumerated values (e.g. priority, severity) &lt;/LI&gt;
&lt;LI&gt;Map aliases in QC to display names in TFS and vice versa &lt;/LI&gt;
&lt;LI&gt;Synchronize attachments &lt;/LI&gt;
&lt;LI&gt;Synchronize links to other defects/bugs&lt;/LI&gt;
&lt;LI&gt;Synchronize HTML fields in QC with HTML fields in TFS&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The Connector itself is free. It does, however, require a TFS CAL and a QC CAL for the machine it's running on. In addition, everyone who views/edits data that's stored in TFS will need a TFS CAL. &lt;/P&gt;
&lt;P&gt;This is the second pre-release with the next one (due later this month) planned as the formal Beta release. If you have any questions about the Connector, please &lt;A href="http://blogs.msdn.com/jimlamb/contact.aspx" mce_href="http://blogs.msdn.com/jimlamb/contact.aspx"&gt;contact me&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9286354" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/QC/default.aspx">QC</category></item><item><title>Integrating Dependencies into Team Build 2010</title><link>http://blogs.msdn.com/jimlamb/archive/2008/11/03/integrating-dependencies-into-team-build-2010.aspx</link><pubDate>Mon, 03 Nov 2008 23:40:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9034991</guid><dc:creator>JimLamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/9034991.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=9034991</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=9034991</wfw:comment><description>&lt;p&gt;I was just reading Brad Butt's &lt;a href="http://threeisit.com/post/Suggestions-for-Microsoft2c-Part-1.aspx"&gt;Suggestions for Microsoft, Part 1&lt;/a&gt; and I thought I'd take the opportunity to let him know that we are addressing two of his three frustrations in Team Build 2010.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Brad's Frustration #1: MSTest cannot stand alone from the Visual Studio IDE&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The Team Test team is planning to provide us with a redistributable package that encapsulates MSTest.exe and all of its dependencies. We plan to integrate that into the Build Service installation for Team Build 2010 meaning that you'll be able to run your automated tests on a default build service installation.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Brad's Frustration #2: VSTS Code Coverage only works with MSTest&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Unfortunately, I can't help Brad with this one. Hopefully it's somewhat mitigated by what we're doing with frustration #1.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Brad's Frustration #3: MSBuild can't build my MSI&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;You can work around this limitation by invoking DevEnv on a Visual Deployment (vdproj) project, but I'll admit it's less than ideal. We are, however, integrating the WiX redistributable into the Team Build 2010 installer as well so that you'll be able to build your WiX projects on a default build service installation. You'll still have to port your Deployment Project to WiX which may be a fairly involved process depending on the complexity of your installer.&lt;/p&gt; &lt;p&gt;It's great to get validation from members of the .NET community like Brad that we're on the right track. I just wish we could get these features out to you faster. I do encourage everyone to keep on blogging, posting to the forums, etc. We really are paying attention and doing our best to make VSTS/TFS the very best team software development solution out there.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9034991" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Rosario/default.aspx">Rosario</category></item><item><title>BizTalk Server and Team Build</title><link>http://blogs.msdn.com/jimlamb/archive/2008/09/29/biztalk-server-and-team-build.aspx</link><pubDate>Mon, 29 Sep 2008 13:10:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8968675</guid><dc:creator>JimLamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/8968675.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=8968675</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=8968675</wfw:comment><description>&lt;p&gt;We’ve been talking with the BizTalk Server team about supporting MSBuild (and, transitively, Team Build) in their next release but I thought I’d share a really terrific post I recently came across about building BizTalk Server projects with the current version of Team Build.&lt;/p&gt;  &lt;p&gt;Mikael Håkansson has authored a two-part blog post on &lt;a href="http://blogical.se/blogs/mikael/archive/2008/08/13/using-team-foundation-build-for-biztalk-projects.aspx"&gt;Using Team Foundation Build for BizTalk projects&lt;/a&gt; (&lt;a href="http://blogical.se/blogs/mikael/archive/2008/08/14/using-team-foundation-build-for-biztalk-projects-part-2.aspx"&gt;Part 2&lt;/a&gt;). There’s no “one size fits all” solution to these sorts of problems, but Mikael has put together a pretty sophisticated solution to meet his needs that includes a set of custom tasks (downloadable from his blog). If it doesn’t meet your specific requirements, it will certainly give you a head start.&lt;/p&gt;  &lt;p&gt;If you’re looking for a simpler solution to the problem, Scott Colestock has a nice write-up on &lt;a href="http://www.traceofthought.net/2008/01/10/MoreOnBuildingBizTalkSolutionsWithTeamBuild.aspx"&gt;building BizTalk solutions with Team Build&lt;/a&gt; that involves using an Exec task to launch DevEnv.exe on the solution with your BizTalk project. Alternatively, you can use Aaron Hallberg’s excellent &lt;a href="http://blogs.msdn.com/aaronhallberg/archive/2007/07/12/team-build-devenv-task.aspx"&gt;DevEnv Task&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8968675" width="1" height="1"&gt;</description></item><item><title>Project System Compatibility with Team Build</title><link>http://blogs.msdn.com/jimlamb/archive/2008/09/29/project-system-compatibility-with-team-build.aspx</link><pubDate>Mon, 29 Sep 2008 12:49:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8968657</guid><dc:creator>JimLamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/8968657.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=8968657</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=8968657</wfw:comment><description>&lt;p&gt;There are a number of projects that you can create and build in Visual Studio that are not supported by MSBuild. That means you can’t use MSBuild to build them from a command line and you can’t build them if they’re contained in a solution you’re building with Team Build. These project types include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SQL Server Reporting Services (SSRS) Projects &lt;/li&gt;    &lt;li&gt;SQL Server Integration Services (SSIS) Projects &lt;/li&gt;    &lt;li&gt;SQL Server Analysis Services (SSAS) Projects &lt;/li&gt;    &lt;li&gt;BizTalk Server Projects &lt;/li&gt;    &lt;li&gt;Setup (Visual Deployment) Projects &lt;/li&gt;    &lt;li&gt;SharePoint Server Projects &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I previously posted about Jim Morris’ solution for building SSIS packages with Team Build and I’ll be posting more information in the near future on the other project types that aren’t directly compatible with Team Build. If there’s a particular project type that you’re having trouble getting to build with Team Build, please &lt;a href="http://blogs.msdn.com/jimlamb/contact.aspx"&gt;let me know&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8968657" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/FAQ/default.aspx">FAQ</category></item><item><title>SQL Server Integration Services and Team Build</title><link>http://blogs.msdn.com/jimlamb/archive/2008/07/29/sql-server-integration-services-and-team-build.aspx</link><pubDate>Wed, 30 Jul 2008 00:27:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8789994</guid><dc:creator>JimLamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/8789994.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=8789994</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=8789994</wfw:comment><description>&lt;p&gt;I recently came across a helpful post on Jim Morris' &lt;a href="http://www.jimbodriven.com/"&gt;IDeveloper blog&lt;/a&gt;. He describes how to get your SSIS packages &amp;quot;building&amp;quot; in MSBuild (allowing them to be built by Team Build as well).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The problem stems from the fact that Team Build uses MSBuild but SSIS projects are not written in MSBuild format. They are just plain old xml. So did you get MSBuild in your SSIS or did you get SSIS in your MSBuild? Not sure why this (and other BI) project type was not written using the MSBuild schema... In the meantime here is a solution to get your SSIS packages &amp;quot;building&amp;quot;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here's a link to Jim's post:   &lt;br /&gt;&lt;a href="http://www.jimbodriven.com/2007/11/you-got-ssis-in-my-msbuild.html"&gt;You got SSIS in my MSBuild&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8789994" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimlamb/archive/tags/FAQ/default.aspx">FAQ</category><category domain="http://blogs.msdn.com/jimlamb/archive/tags/Orcas/default.aspx">Orcas</category></item><item><title>Best Practices for Shared Virtual Machines</title><link>http://blogs.msdn.com/jimlamb/archive/2008/07/18/best-practices-for-shared-virtual-machines.aspx</link><pubDate>Fri, 18 Jul 2008 17:46:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8749599</guid><dc:creator>JimLamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimlamb/comments/8749599.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimlamb/commentrss.aspx?PostID=8749599</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jimlamb/rsscomments.aspx?PostID=8749599</wfw:comment><description>&lt;p&gt;I was working with a shared VPC the other day and I thought I'd share some of my thoughts on how to make them a little easier to work with.&lt;/p&gt;  &lt;h3&gt;Turn off the Shutdown Event Tracker&lt;/h3&gt;  &lt;p&gt;The Shutdown Event Tracker is a feature in Windows Server that prompts the user to explain why they are shutting down or restarting the server. While this is a useful feature for production servers, it's just annoying for shared virtual machines. If you're not sure what I'm talking about, here's a screen shot of the dialog displayed by the Shutdown Event Tracker:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_10.png"&gt;&lt;img height="448" alt="image" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_thumb_4.png" width="377" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To prevent Windows Server from display this dialog when someone shuts down the virtual machine, follow the steps below:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Run the Group Policy Object Editor (gpedit.msc)      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="179" alt="image" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_thumb.png" width="347" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Navigate to the Local Computer Policy &amp;gt; Computer Configuration &amp;gt; Administrative Templates &amp;gt; System node in the tree control on the left and double click the &amp;quot;Display Shutdown Event Tracker&amp;quot; item on the right.      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="314" alt="image" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_thumb_2.png" width="515" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Click the &amp;quot;Disabled&amp;quot; radio button to disable the Shutdown Event Tracker.      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="448" alt="image" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_thumb_3.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Turn on Automatic Logon&lt;/h3&gt;  &lt;p&gt;Keeping track of logon credentials for shared virtual machines is cumbersome. You generally end up creating a text file with the credentials and placing that text file in the directory with the virtual machines files and hope that they stay together as a set. The easier way to do it is to enable automatic logon in the virtual machine.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Run the Registry Editor (regedt32.exe).      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_12.png"&gt;&lt;img height="179" alt="image" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_thumb_5.png" width="347" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Locate the following key in the registry:      &lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_16.png"&gt;&lt;img height="314" alt="image" src="http://blogs.msdn.com/blogfiles/jimlamb/WindowsLiveWriter/BestPracticesforSharedVirtualMachines_9734/image_thumb_7.png" width="573" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;Double-click the &lt;strong&gt;DefaultUserName&lt;/strong&gt; entry, type your user name, and then click OK.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Double-click the &lt;strong&gt;DefaultPassword&lt;/strong&gt; entry, type your password, and then click OK. NOTE: If the &lt;strong&gt;DefaultPassword&lt;/strong&gt; value does not exist, it must be added. To add the value, follow these steps:       &lt;ul&gt;       &lt;li&gt;On the Edit menu, click New, and then point to String Value. &lt;/li&gt;        &lt;li&gt;Type &lt;strong&gt;DefaultPassword&lt;/strong&gt;, and then press ENTER. &lt;/li&gt;        &lt;li&gt;Double-click &lt;strong&gt;DefaultPassword&lt;/strong&gt;. &lt;/li&gt;        &lt;li&gt;In the Edit String dialog, type your password and then click OK.          &lt;br /&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; If no &lt;strong&gt;DefaultPassword&lt;/strong&gt; string is specified, Windows automatically changes the value of the &lt;strong&gt;AutoAdminLogon&lt;/strong&gt; key from 1 (true) to 0 (false), disabling the &lt;strong&gt;AutoAdminLogon &lt;/strong&gt;feature. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;On the Edit menu, click New, and then point to String Value. &lt;/li&gt;    &lt;li&gt;Type &lt;strong&gt;AutoAdminLogon&lt;/strong&gt;, and then press ENTER. &lt;/li&gt;    &lt;li&gt;Double-click &lt;strong&gt;AutoAdminLogon&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the Edit String dialog box, type &lt;strong&gt;1&lt;/strong&gt; and then click OK. &lt;/li&gt;    &lt;li&gt;Quit the Registry Editor. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;To bypass the &lt;strong&gt;AutoAdminLogon &lt;/strong&gt;process and to log on as a different user, hold down the SHIFT key after you log off or after Windows restarts.&lt;/p&gt;  &lt;h3&gt;Additional Software&lt;/h3&gt;  &lt;p&gt;Consider installing some additional software for to make the virtual machine more convenient to use.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx"&gt;BgInfo&lt;/a&gt;. How many times have you walked up to a system in your office and needed to click through several diagnostic windows to remind yourself of important aspects of its configuration, such as its name, IP address, or operating system version If you manage multiple computers you probably need BGInfo. It automatically displays relevant information about a Windows computer on the desktop's background, such as the computer name, IP address, service pack version, and more. You can edit any field as well as the font and background colors, and can place it in your startup folder so that it runs every boot, or even configure it to display as the background for the logon screen. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you have any other suggestions on how to make shared VPCs easier to work with. I'd love to hear them!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8749599" width="1" height="1"&gt;</description></item></channel></rss>