<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Jakob Ehn</title>
        <link>http://geekswithblogs.net/jakob/Default.aspx</link>
        <description>Visual Studio ALM MVP @Inmeta Crayon</description>
        <language>en-US</language>
        <copyright>Jakob Ehn</copyright>
        <managingEditor>jakob.ehn@inmeta.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Jakob Ehn</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/jakob/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JakobEhn" /><feedburner:info uri="jakobehn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
            <title>New Book: Pro Team Foundation Service</title>
            <category>TFS</category>
            <category>Visual Studio 2012</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/8i1OOfjul5Q/new-book-pro-team-foundation-service.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx'&gt;http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The last couple of months I have been working together with &lt;a href="http://msmvps.com/blogs/molausson/"&gt;Mathias Olausson&lt;/a&gt;, &lt;a href="http://mskold.blogspot.se/"&gt;Mattias Sköld&lt;/a&gt; and &lt;a href="https://www.apress.com/index.php/author/author/view/id/2328"&gt;Joachim Rossberg&lt;/a&gt; on a new book project for &lt;a href="http://www.apress.com/"&gt;Apress&lt;/a&gt; that has just been published. The book is called &lt;strong&gt;&lt;a href="http://www.apress.com/microsoft/workflow/9781430259954"&gt;Pro Team Foundation Service&lt;/a&gt;&lt;/strong&gt; and covers all aspects of working with Team Foundation Service, Microsoft's hosted version of Team Foundation Server in the cloud. I have mainly worked on the chapter related to automated build and continuous deployment, but also with some of the other chapters.&lt;/p&gt;  &lt;p&gt;It has been a quite hectic  project due to a tight schedule, but at the same time it has been a lot of fun to work on this book together with late night meetings and weekends filled with book writing and chapter editing. &lt;/p&gt;  &lt;p&gt;During the project we’ve had great help from several people at Microsoft, Jamie Cool, Will Smythe, &lt;a href="http://blogs.msdn.com/b/anutthara/"&gt;Anutthara Bharadwaj&lt;/a&gt;, &lt;a href="http://www.edsquared.com/"&gt;Ed Blankenship&lt;/a&gt; and Vijay Machiraju. Also a big thanks to &lt;a href="http://blogs.msdn.com/b/bharry/"&gt;Brian Harry&lt;/a&gt; for writing the foreword to the book. In addition I’d like to thank my colleague &lt;a href="http://geekswithblogs.net/terje/"&gt;Terje Sandstrøm&lt;/a&gt; for helping out with Technical Review of large parts of the book.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Here is some information about the book, you can find it on Amazon here:    &lt;br /&gt;&lt;a href="http://www.amazon.com/Team-Foundation-Service-Mathias-Olausson/dp/1430259957#_"&gt;http://www.amazon.com/Team-Foundation-Service-Mathias-Olausson/dp/1430259957#_&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check it out and let us know what you think!   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/NewBookProTeamFoundationService_149E2/clip_image001_2.jpg"&gt;&lt;img title="clip_image001" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="clip_image001" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/NewBookProTeamFoundationService_149E2/clip_image001_thumb.jpg" width="300" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Pro Team Foundation Service&lt;/i&gt; gives you a jump-start into Microsoft’s cloud-based ALM platform, taking you through the different stages of software development. Every project needs to plan, develop, test and release software and with agile practices often at a higher pace than ever before.     &lt;br /&gt;Microsoft's Team Foundation Service is a cloud-based platform that gives you tools for agile planning and work tracking. It has a code repository that can be used not only from Visual Studio but from Java platforms and Mac OS X. The testing tools allow testers to start testing at the same time as developers start developing. The book also covers how to set up automated practices such as build, deploy and test workflows.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;This book:&lt;/p&gt;  &lt;p&gt;· Takes you through the major stages in a software development project. &lt;/p&gt;  &lt;p&gt;· Gives practical development guidance for the whole team. &lt;/p&gt;  &lt;p&gt;· Enables you to quickly get started with modern development practices. &lt;/p&gt;  &lt;p&gt;With Microsoft Team Foundation Service comes a collaboration platform that gives you and your team the tools to better perform your tasks in a fully integrated way. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;What you’ll learn&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· What ALM is and what it can do for you. &lt;/p&gt;  &lt;p&gt;· Leverage a cloud-based ALM platform for quick improvements in your development process. &lt;/p&gt;  &lt;p&gt;· Improve your agile development process using integrated tools and practices. &lt;/p&gt;  &lt;p&gt;· Develop automated build, deployment and testing processes. &lt;/p&gt;  &lt;p&gt;· Integrate different development tools with one collaboration platform. &lt;/p&gt;  &lt;p&gt;· Get started with ALM best-practices first time round. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Who this book is for&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Pro Team Foundation Service&lt;/i&gt; is for any development team that wants to take their development practices to the next level. Microsoft Team Foundation Service is an excellent platform for managing the entire application development lifecycle and being a cloud-based offering it is very easy to get started. &lt;i&gt;Pro Team Foundation Service&lt;/i&gt; is a great guide for anyone in a team who wants to get started with the service and wants to get expert guidance to do it right.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Table of Contents&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Introduction to Application Lifecycle Management &lt;/p&gt;    &lt;p&gt;2. Introduction to Agile Planning, Development, and Testing &lt;/p&gt;    &lt;p&gt;3. Deciding on a Hosted Service &lt;/p&gt;    &lt;p&gt;4. Getting Started &lt;/p&gt;    &lt;p&gt;5. Working with the Initial Product Backlog &lt;/p&gt;    &lt;p&gt;6. Managing Team and Alerts &lt;/p&gt;    &lt;p&gt;7. Initial Sprint Planning &lt;/p&gt;    &lt;p&gt;8. Running the Sprint  &lt;/p&gt;    &lt;p&gt;9. Kanban &lt;/p&gt;    &lt;p&gt;10. Engaging the Customer &lt;/p&gt;    &lt;p&gt;11. Choosing Source Control Options &lt;/p&gt;    &lt;p&gt;12. Working with Team Foundation Version Control in Visual Studio &lt;/p&gt;    &lt;p&gt;13. Working with Git in Visual Studio &lt;/p&gt;    &lt;p&gt;14. Working in Heterogeneous Environments &lt;/p&gt;    &lt;p&gt;15. Configuring Build Services &lt;/p&gt;    &lt;p&gt;16. Working with Builds &lt;/p&gt;    &lt;p&gt;17. Customizing Builds &lt;/p&gt;    &lt;p&gt;18. Continuous Deployment &lt;/p&gt;    &lt;p&gt;19. Agile Testing &lt;/p&gt;    &lt;p&gt;20. Test Management &lt;/p&gt;    &lt;p&gt;21. Lab Management &lt;/p&gt;&lt;/blockquote&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/152963.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/8i1OOfjul5Q" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx</guid>
            <pubDate>Mon, 20 May 2013 21:27:33 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/152963.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/152963.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/152963.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx</feedburner:origLink></item>
        <item>
            <title>Extending Team Explorer 2012 &amp;ndash; Associating Recent Work Items</title>
            <category>Visual Studio 2012</category>
            <category>TFS</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/SXlR60jLyCI/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx'&gt;http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Extension available at:&lt;/strong&gt; &lt;a title="http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c" href="http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c"&gt;http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I have been playing around a bit lately with extending Team Explorer 2012, mostly because it is fun but also to fix a little nagging feature that should have been there from the beginning. Often I (and a lot of other people) find myself wanting to associate several consecutive changesets to the same work item. The problem is that Team Explorer does not remember this, instead I have to either remember the ID or use a query that hopefully will match the work item.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_2.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb.png" width="327" height="126" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;strong&gt;Where is the work item that I just associated with?&lt;/strong&gt;     &lt;br /&gt;  &lt;br /&gt;True, when using the My Work page and the teams and sprint backlogs are correctly setup, you can find “your” work items there, but every so often this is not the case, and off I go to locate that work item again.&lt;/p&gt;  &lt;p&gt;So this seemed to be a good feature to implement and at the same time learn a little about how to extend Team Explorer in Visual Studio 2012.&lt;/p&gt;  &lt;p&gt;There is a great sample posted by Microsoft over at MSDN, it also talks about the main extension points and classes/interfaces that you need to know about. You can find it here: &lt;a title="http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594" href="http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594"&gt;http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594&lt;/a&gt;. If you have developed extensions to Visual Studio before, you will be relieved to know that this new extension model for Team Explorer is purely based on standard .NET/WPF and MEF, no weird COM interfaces. &lt;/p&gt;  &lt;p&gt;You can add new pages to Team Explorer, you can add new sections to existing pages and you can add navigation links to the Home screen. All these extensions are discovered by Team Explorer using the Managed Extensibility Framework (MEF). You just need to attribute your classes with the correct attribute and it will be found by Team Explorer. The attributes also control where your extension will appear. This extension is a Section that should appear inside the Pending Changes page:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt; &lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_10.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_4.png" width="564" height="115" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Example of attributing a Team Explorer extension&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The last property (35) is a priority number that controls when the extension is created and also where it will placed relative to the other sections. The existing Related Work Items section has priority 30, so 35 will place our extension right below it.&lt;/p&gt;  &lt;p&gt;We also need to implement the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.controls.iteamexplorersection.aspx"&gt;ITeamExplorerSection&lt;/a&gt; interface, that contains properties and methods that needs to be implemented for anything to show up.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_8.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_3.png" width="262" height="344" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;ITeamExplorerSection interface&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;The most interesting property here  is the &lt;strong&gt;SectionContent &lt;/strong&gt;property which is where you return the content of your extensions. This is typically a WPF user control in which you can add any controls you like.  &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;This is how the extension appear inside the Pending Changes page. It will analyze your recent changesets in the current team project and extract the last 5 associated work items and show them in a list.     &lt;br /&gt;From the list you can then easily add a work item to the current pending changes by right-clicking on it and select Add. You’ll note that the work item will then disappear from the list, since you are not likely interested in adding it again.     &lt;br /&gt;&lt;/p&gt; &lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_4.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_1.png" width="539" height="266" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Recently Associated Work Item section&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I encourage you to read the MSDN article for more information about the possibilities to extend Team Explorer 2012. Also, try out the extension and let me know it you find it useful!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/152934.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/SXlR60jLyCI" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</guid>
            <pubDate>Thu, 16 May 2013 16:29:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/152934.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/152934.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/152934.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</feedburner:origLink></item>
        <item>
            <title>TFS Build: Running Static Code Analysis for Specific Configuration</title>
            <category>TFS</category>
            <category>Team Build</category>
            <category>Visual Studio 2012</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/vNNvcYgMd54/tfs-build-running-static-code-analysis-for-specific-configuration.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2013/01/20/tfs-build-running-static-code-analysis-for-specific-configuration.aspx'&gt;http://geekswithblogs.net/jakob/archive/2013/01/20/tfs-build-running-static-code-analysis-for-specific-configuration.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;   &lt;br /&gt;Running Static Code Analysis (SCA) is something that you should be doing regularly to verify your code base against a large set of rules that will check your code for potential problems and how it comply with standard patterns such as naming conventions for example. Microsoft include several different rule sets that you can use for starters, but you can build your own rule sets as well, that contain the rule that you want to use, In addition, you can write your own custom rules and add these to your rule sets. &lt;/p&gt;  &lt;p&gt;What you will notice quickly when you start running SCA for larger solutions is that it can take a lot of time. Therefore, you normally don’t want to run this on your local build but instead run it as part of your automated builds. It is recommended to set up a specific build for your projects that measures code quality, by running for example SCA, Code Metrics and Code Coverage. All these things take time to complete, so don’t put these in your Check-In builds, but in a Quality Assurance (QA) build.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;     &lt;br /&gt;&lt;font color="#008080" size="4"&gt;Configuring Static Code Analysis&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;With Team Foundation Build, it is easy to run Static Code Analysis as part of the build, just modify the &lt;strong&gt;Perform Code Analysis&lt;/strong&gt; process parameter in your build definition:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb_1.png" width="820" height="301" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There are three possible values that you can use here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Never&lt;/strong&gt; – Never run Static Code Analysis&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;As Configured&lt;/strong&gt; – If the project is configured to run Static Code Analysis for the current configuration, then SCA will be executed&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Always&lt;/strong&gt; – Always run Static Code Analysis, independent of how the projects are configured&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you select As Configured, you need to make sure that you have configured your projects correctly. This is done by opening the Properties window for your project and select the Code Analysis tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb.png" width="692" height="425" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see, the Code Analysis settings are specific to the Configuration and Platform for the project. This means that you can, for example, run code analysis only on Debug builds and not on Release builds.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Now, while using project specific settings like this to control when SCA is executed works, it has some drawbacks. When the solutions start to grow in size, it can be hard to make sure that the settings in every project is correctly configured. Also, as mentioned before, you typically don’t want to run SCA at all on your local builds, since it makes your build times longer. This can be solved by for example making sure that only the Release configuration has the Enable Code Analysis on Build property set to true, and then you only build the Debug configuration locally.&lt;/p&gt;  &lt;p&gt;A better way to solve this is to control this completely from the build definition instead. You do this by setting the &lt;strong&gt;Perform Code Analysis &lt;/strong&gt;&lt;font style="background-color: #ffffff"&gt;process parameter to Always, as shown above. This will make sure that SCA are run for all projects, no matter how they are configured.     &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffffff"&gt;&lt;/font&gt;&lt;/p&gt; &lt;strong&gt;&lt;font color="#008080" size="4"&gt;Running SCA for specific configurations&lt;/font&gt;&lt;/strong&gt;  &lt;br /&gt;  &lt;p&gt;A problem that we faced recently at a customer that are running big builds (1+ hours) is that they are building both the and Debug and Release configurations as part of their builds. We wanted to run SCA on these builds, and we don’t want to configure each project (the solutions has 150+ projects in it). But, setting Perform Code Analysis to Always, this will result in SCA being run for &lt;strong&gt;both&lt;/strong&gt; Debug and Release builds resulting in a considerable increase in build time.&lt;/p&gt;  &lt;p&gt;So, how can we make sure that SCA is executed on all projects, but only on on (or several) configurations? One way of doing this is to customize your build template and add a parameter that specifies these configurations.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Here are the steps to accomplish this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;If creating a new build template from scratch, branch the DefaultTemplate.11.1.xaml build process template.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Open the template in Visual Studio     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select the top Sequence activity and expand the Arguments tab     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;At the bottom of the list, add a new parameter called &lt;em&gt;RunSCAForTheseConfigurations&lt;/em&gt; with &lt;em&gt;StringList&lt;/em&gt; as type      &lt;br /&gt;      &lt;br /&gt;  &lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_24.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb_11.png" width="829" height="132" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Locate the MetaData process parameter and click on the browse button on the very right     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add a new entry for the new parameter     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_8.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb_3.png" width="489" height="441" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Inside the workflow, locate the MSBuild activity that is used for compiling the projects. It is right at the end of the C&lt;strong&gt;ompile the Project &lt;/strong&gt;sequence:      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_10.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb_4.png" width="234" height="313" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;/p&gt;      &lt;p&gt;Right-click the MSBuild activity and select Properties       &lt;br /&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Locate the &lt;strong&gt;RunCodeAnalysis&lt;/strong&gt; property and open the expression editor        &lt;br /&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Enter the following expression        &lt;br /&gt;        &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb_5.png" width="669" height="229" /&gt;&lt;/a&gt;  &lt;br /&gt;        &lt;br /&gt;The expression evaluates if the current configuration (&lt;em&gt;platformConfiguration.Configuration&lt;/em&gt;) is specified in our new property. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Save the workflow and check it in       &lt;br /&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now you can create a new build definition and enter one or more configurations in the new property:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Since this is a property of type StringList, you can add multiple configurations here if you want to.&lt;/p&gt;  &lt;p&gt;You can see from this build summary that SCA has only been performed on the Debug configuration, and not for Release. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_18.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/TFSBuildRunningStaticCodeAnalysisforSpec_11FE1/image_thumb_8.png" width="802" height="391" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;strong&gt;&lt;font color="#008080" size="4"&gt;Conclusion&lt;/font&gt;&lt;/strong&gt;  &lt;br /&gt;  &lt;p&gt;I have shown one way to implement automatically running Static Code Analysis on a subset of configurations for a build that builds multiple solutions. This is very useful when you have large builds that compile multiple configurations. &lt;/p&gt;  &lt;p&gt;Hope you found this post useful.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/151888.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/vNNvcYgMd54" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2013/01/20/tfs-build-running-static-code-analysis-for-specific-configuration.aspx</guid>
            <pubDate>Sun, 20 Jan 2013 20:54:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/151888.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2013/01/20/tfs-build-running-static-code-analysis-for-specific-configuration.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/151888.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/151888.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2013/01/20/tfs-build-running-static-code-analysis-for-specific-configuration.aspx</feedburner:origLink></item>
        <item>
            <title>Book &amp;ldquo;Team Foundation Server 2012 Starter&amp;rdquo; published!</title>
            <category>Visual Studio 2012</category>
            <category>TFS</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/yN2coITzvog/book-ldquoteam-foundation-server-2012-starterrdquo-published.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/11/29/book-ldquoteam-foundation-server-2012-starterrdquo-published.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/11/29/book-ldquoteam-foundation-server-2012-starterrdquo-published.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;   &lt;br /&gt;During the summer and fall this year, me and my colleague &lt;a href="http://geekswithblogs.net/terje/Default.aspx"&gt;&lt;u&gt;Terje Sandstrøm&lt;/u&gt;&lt;/a&gt; has worked together on a book project that has now finally hit the stores!     &lt;br /&gt;The title of the book is &lt;strong&gt;Team Foundation Server 2012 Starter&lt;/strong&gt; and is published by &lt;a href="http://www.packtpub.com/"&gt;&lt;u&gt;Packt Publishing&lt;/u&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;You can find it at &lt;a title="http://www.packtpub.com/team-foundation-server-2012-starter/book" href="http://www.packtpub.com/team-foundation-server-2012-starter/book"&gt;&lt;u&gt;http://www.packtpub.com/team-foundation-server-2012-starter/book&lt;/u&gt;&lt;/a&gt; or from Amazon &lt;a title="http://www.amazon.com/dp/1849688389" href="http://www.amazon.com/dp/1849688389"&gt;&lt;u&gt;http://www.amazon.com/dp/1849688389&lt;/u&gt;&lt;/a&gt;  &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;                      &lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/BookTeamFoundationServer2012StarterPubli_11A91/image_2.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/BookTeamFoundationServer2012StarterPubli_11A91/image_thumb.png" width="345" height="484" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;The book is part of a concept that Packt have with starter-books, intended for people new to Team Foundation Server 2012 and who want a quick guideline to get it up and working. It covers the fundamentals, from installing and configuring it, and how to use it with source control, work items and builds. It is done as a step-by-step guide, but also includes best practices advice in the different areas. It covers the use of both the on-premises and the TFS Services version. It also has a list of links and references in the end to the most relevant Visual Studio 2012 ALM sites.&lt;/p&gt;  &lt;p&gt;Our good friend and fellow ALM MVP &lt;a href="http://msmvps.com/blogs/molausson/"&gt;&lt;u&gt;Mathias Olausson&lt;/u&gt;&lt;/a&gt; have done the review of the book, thanks again Mathias!&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;We hope the book fills the gap between the different online guide sites and the more advanced books that are out. Check it out and please let us know what     &lt;br /&gt;you think of the book!    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;Book Description&lt;/h4&gt;  &lt;p&gt;Your quick start guide to TFS 2012, top features, and best practices with hands on examples&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Overview&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install TFS 2012 from scratch &lt;/li&gt;    &lt;li&gt;Get up and running with your first project &lt;/li&gt;    &lt;li&gt;Streamline release cycles for maximum productivity &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;In Detail&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Team Foundation Server 2012 is Microsoft's leading ALM tool, integrating source control, work item and process handling, build automation, and testing.&lt;/p&gt;  &lt;p&gt;This practical "Team Foundation Server 2012 Starter Guide" will provide you with clear step-by-step exercises covering all major aspects of the product.    &lt;br /&gt;This is essential reading for anyone wishing to set up, organize, and use TFS server.&lt;/p&gt;  &lt;p&gt;This hands-on guide looks at the top features in Team Foundation Server 2012, starting with a quick installation guide and then moving into using it for your    &lt;br /&gt;software development projects. Manage your team projects with Team Explorer, one of the many new features for 2012.&lt;/p&gt;  &lt;p&gt;Covering all the main features in source control to help you work more efficiently, including tools for branching and merging, we will delve into the Agile Planning    &lt;br /&gt;Tools for planning your product and sprint backlogs.&lt;/p&gt;  &lt;p&gt;Learn to set up build automation, allowing your team to become faster, more streamlined, and ultimately more productive with this    &lt;br /&gt;"Team Foundation Server 2012 Starter Guide".&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;What you will learn from this book&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install TFS 2012 on premise &lt;/li&gt;    &lt;li&gt;Access TFS Services in the cloud &lt;/li&gt;    &lt;li&gt;Quickly get started with a new project with product backlogs, source control, and build automation &lt;/li&gt;    &lt;li&gt;Work efficiently with source control using the top features &lt;/li&gt;    &lt;li&gt;Understand how the tools for branching and merging in TFS 2012 help you isolate work and teams &lt;/li&gt;    &lt;li&gt;Learn about the existing process templates, such as Visual Studio Scrum 2.0 &lt;/li&gt;    &lt;li&gt;Manage your product and sprint backlogs using the Agile planning tools &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Approach&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This Starter guide is a short, sharp introduction to Team Foundation Server 2012, covering everything you need to get up and running.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Who this book is written for&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you are a developer, project lead, tester, or IT administrator working with Team Foundation Server 2012 this guide will get you up to speed quickly    &lt;br /&gt;and with minimal effort.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/151390.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/yN2coITzvog" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/11/29/book-ldquoteam-foundation-server-2012-starterrdquo-published.aspx</guid>
            <pubDate>Thu, 29 Nov 2012 08:33:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/151390.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/11/29/book-ldquoteam-foundation-server-2012-starterrdquo-published.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/151390.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/151390.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/11/29/book-ldquoteam-foundation-server-2012-starterrdquo-published.aspx</feedburner:origLink></item>
        <item>
            <title>Using Private Extension Galleries in Visual Studio 2012</title>
            <category>Visual Studio 2012</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/yTxZQYw9_Qk/using-private-extension-galleries-in-visual-studio-2012.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/11/07/using-private-extension-galleries-in-visual-studio-2012.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/11/07/using-private-extension-galleries-in-visual-studio-2012.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Updated January 13th 2013&lt;/strong&gt;&lt;/font&gt;:  Added note about ASP.NET MVC 4.0 prerequirement&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;&lt;font color="#0080c0"&gt;Note&lt;/font&gt;: &lt;/strong&gt;The installer and the complete source code is available over at CodePlex at the following location: &lt;a href="http://inmetavsgallery.codeplex.com"&gt;http://inmetavsgallery.codeplex.com&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Extensions and addins are everywhere in the Visual Studio ALM ecosystem! Microsoft releases new cool features in the form of extensions and the list of 3rd party extensions that plug into Visual Studio just keeps growing. One of the nice things about the VSIX extensions is how they are deployed. Microsoft hosts a public Visual Studio Gallery where you can upload extensions and make them available to the rest of the community. Visual Studio checks for updates to the installed extensions when you start Visual Studio, and installing/updating the extensions is fast since it is only a matter of extracting the files within the VSIX package to the local extension folder. &lt;/p&gt;  &lt;p&gt;But for custom, enterprise-specific extensions, you don’t want to publish them online to the whole world, but you still want an easy way to distribute them to your developers and partners. This is where Private Extension Galleries come into play. In Visual Studio 2012, it is now possible to add custom extensions galleries that can point to any URL, as long as that URL returns the expected content of course (see below).Registering a new gallery in Visual Studio is easy, but there is very little documentation on how to actually host the gallery.&lt;/p&gt;  &lt;p&gt;Visual Studio galleries uses Atom Feed XML as the protocol for delivering new and updated versions of the extensions. &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2011/10/03/private-extension-galleries-for-the-enterprise.aspx"&gt;This MSDN page&lt;/a&gt; describes how to create a static XML file that returns the information about your extensions. This approach works, but require manual updates of that file every time you want to deploy an update of the extension.&lt;/p&gt;  &lt;p&gt;Wouldn’t it be nice with a web service that takes care of this for you, that just lets you drop a new version of your VSIX file and have it automatically detect the new version and produce the correct Atom Feed XML? &lt;/p&gt;  &lt;p&gt;Well search no more, this is exactly what the Inmeta Visual Studio Gallery Service does for you :-)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_12.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_thumb_5.png" width="932" height="454" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here you can see that in addition to the standard Online galleries there is an &lt;em&gt;Inmeta Gallery&lt;/em&gt; that contains two extensions (our WIX templates and our custom TFS Checkin Policies). These can be installed/updated i the same way as extensions from the public Visual Studio Gallery.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;Installing the Service&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The service uses ASP.NET MVC 4.0, so make sure that you have this installed on your web server.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Download the installer (&lt;em&gt;Inmeta.VSGalleryService.Install.msi&lt;/em&gt;) for the service and run it.       &lt;br /&gt;The installation is straight forward, just select web site, application pool and (optional) a virtual directory where you want to install the service.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_4.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_thumb_1.png" width="503" height="393" /&gt;&lt;/a&gt;  &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you want to run it in the web site root, just leave the application name blank       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Press Next and finish the installer.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Open web.config in a text editor and locate the the &amp;lt;applicationSettings&amp;gt; element      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Edit the following setting values:      &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;FeedTitle            &lt;br /&gt;&lt;/strong&gt;This is the name that is shown if you browse to the service using a browser. Not used by Visual Studio           &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;BaseURI&lt;/strong&gt;           &lt;br /&gt;When Visual Studio downloads the extension, it will be given this URI + the name of the extension that you selected. This value should be on the following format:           &lt;br /&gt;&lt;a href="http://SERVER/[VDIR]/gallery/extension/"&gt;&lt;em&gt;http://SERVER/[VDIR]/gallery/extension/&lt;/em&gt;&lt;/a&gt;           &lt;br /&gt;&lt;em&gt;           &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;        &lt;li&gt;&lt;em&gt;&lt;/em&gt;&lt;strong&gt;VSIXAbsolutePath            &lt;br /&gt;&lt;/strong&gt;This is the path where you will deploy your extensions. This can be a local folder or a remote share. You just need to make sure that the application pool identity account has read permissions in this folder           &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Save web.config to finish the installation      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Open a browser and enter the URL to the service. It should show an empty Feed page:      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_6.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_thumb_2.png" width="644" height="201" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Adding the Private Gallery in Visual Studio 2012      &lt;br /&gt;&lt;/strong&gt;Now you need to add the gallery in Visual Studio. This is very easy and is done as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Go to &lt;strong&gt;Tools –&amp;gt; Options&lt;/strong&gt; and select &lt;em&gt;Environment –&amp;gt; Extensions and Updates        &lt;br /&gt;        &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Press &lt;em&gt;Add&lt;/em&gt; to add a new gallery       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Enter a descriptive name, and add the URL that points to the web site/virtual directory where you installed the service in the previous step      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt; &lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_8.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_thumb_3.png" width="761" height="445" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Press OK to save the settings.      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Deploying an Extension      &lt;br /&gt;&lt;/strong&gt;This one is easy: Just drop the file in the designated folder! :-)  If it is a new version of an existing extension, the developers will be notified in the same way as for extensions from the public Visual Studio gallery:     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_14.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ImplementingPrivateExtensionGalleriesinV_F5B1/image_thumb_6.png" width="864" height="299" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I hope that you will find this sever useful, please contact me if you have questions or suggestions for improvements!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/151192.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/yTxZQYw9_Qk" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/11/07/using-private-extension-galleries-in-visual-studio-2012.aspx</guid>
            <pubDate>Wed, 07 Nov 2012 19:47:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/151192.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/11/07/using-private-extension-galleries-in-visual-studio-2012.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/151192.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/151192.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/11/07/using-private-extension-galleries-in-visual-studio-2012.aspx</feedburner:origLink></item>
        <item>
            <title>Get Started using Build-Deploy-Test Workflow with TFS 2012</title>
            <category>Team Build</category>
            <category>TFS</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/c1Vt8w6OeQc/get-started-using-build-deploy-test-workflow-with-tfs-2012.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/09/05/get-started-using-build-deploy-test-workflow-with-tfs-2012.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/09/05/get-started-using-build-deploy-test-workflow-with-tfs-2012.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;TFS 2012 introduces a new type of Lab environment called Standard Environment. This allows you to setup a full Build Deploy Test (BDT) workflow that will build your application, deploy it to your target machine(s) and then run a set of tests on that server to verify the deployment. In TFS 2010, you had to use System Center Virtual Machine Manager and involve half of your IT department to get going. Now all you need is a server (virtual or physical) where you want to deploy and test your application. You don’t even have to install a test agent on the machine, TFS 2012 will do this for you!&lt;/p&gt;  &lt;p&gt;Although each step is rather simple, the entire process of setting it up consists of a bunch of steps. So I thought that it could be useful to run through a typical setup.I will also link to some good guidance from MSDN on each topic.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd" size="3"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd" size="3"&gt;High Level Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install and configure Visual Studio 2012 Test Controller on Target Server &lt;/li&gt;    &lt;li&gt;Create Standard Environment &lt;/li&gt;    &lt;li&gt;Create Test Plan with Test Case &lt;/li&gt;    &lt;li&gt;Run Test Case &lt;/li&gt;    &lt;li&gt;Create Coded UI Test from Test Case &lt;/li&gt;    &lt;li&gt;Associate Coded UI Test with Test Case &lt;/li&gt;    &lt;li&gt;Create Build Definition using LabDefaultTemplate &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;     &lt;br /&gt;&lt;font color="#4f81bd" size="3"&gt;1. Install and Configure Visual Studio 2012 Test Controller on Target Server&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First of all, note that you do not have to have the Test Controller running on the target server. It can be running on another server, as long as the Test Agent can communicate with the test controller and the test controller can communicate with the TFS server. If you have several machines in your environment (web server, database server etc..), the test controller can be installed either on one of those machines or on a dedicated machine.&lt;/p&gt;  &lt;p&gt;To install the test controller, simply mount the Visual Studio Agents media on the server and browse to the &lt;em&gt;vstf_controller.exe&lt;/em&gt; file located in the &lt;em&gt;TestController&lt;/em&gt; folder.     &lt;br /&gt;Run through the installation, you might need to reboot the server since it installs .NET 4.5.&lt;/p&gt;  &lt;p&gt;When the test controller is installed, the Test Controller configuration tool will launch automatically (if it doesn’t, you can start it from the Start menu). Here you will supply the credentials of the account running the test controller service. Note that this account will be given the necessary permissions in TFS during the configuration. Make sure that you have entered a valid account by pressing the Test link.    &lt;br /&gt;    &lt;br /&gt;Also, you have to register the test controller with the TFS collection where your test plan is located (and usually the code base of course)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_3.png" width="542" height="605" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;When you press Apply Settings, all the configuration will be done. You might get some warnings at the end, that might or might not cause a problem later. Be sure to read them carefully.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_10.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_4.png" width="521" height="421" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;For more information about configuring your test controllers, see &lt;a href="http://msdn.microsoft.com/en-us/library/hh546459" target="_blank"&gt;Setting Up Test Controllers and Test Agents to Manage Tests with Visual Studio&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font color="#4bacc6" size="3"&gt;&lt;strong&gt;2. Create Standard Environment&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now you need to create a Lab environment in Microsoft Test Manager. Since we are using an existing physical or virtual machine we will create a Standard Environment.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open MTM and go to Lab Center.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Click New to create a new environment      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Enter a name for the environment. Since this environment will only contain one machine, we will use the machine name for the environment (&lt;em&gt;TargetServer&lt;/em&gt; in this case)       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb.png" width="774" height="386" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the next page, click Add to add a machine to the environment. Enter the name of the machine (&lt;em&gt;TargetServer.Domain.Com&lt;/em&gt;), and give it the Web Server role. The name must be reachable both from your machine during configuration and from the TFS app tier server.      &lt;br /&gt;      &lt;br /&gt;You also need to supply an account that is a local administration on the target server. This is needed in order to automatically install a test agent later on the machine.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_1.png" width="829" height="506" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the next page, you can add tags to the machine. This is not needed in this scenario so go to the next page.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Here you will specify which test controller to use and that you want to run UI tests on this environment. This will in result in a Test Agent being automatically installed and configured on the target server.      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_14.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_6.png" width="820" height="453" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;The name of the machine where you installed the test controller should be available on the drop down list (TargetServer in this sample). If you can’t see it, you might have selected a different TFS project collection.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Press Next twice and then Verify to verify all the settings:      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_16.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_7.png" width="904" height="269" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Press finish. This will now create and prepare the environment, which means that it will remote install a test agent on the machine. As part of this installation, the remote server will be restarted.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4bacc6" size="3"&gt;3-5. Create Test Plan, Run Test Case, Create Coded UI Test&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I will not cover step 3-5 here, there are plenty of information on how you create test plans and test cases and automate them using Coded UI Tests. &lt;/p&gt;  &lt;p&gt;In this example I have a test plan called My Application and it contains among other things a test suite called &lt;em&gt;Automated Tests &lt;/em&gt;where I plan to put test cases that should be automated and executed as part of the BDT workflow.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_39.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_18.png" width="897" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;For more information about Coded UI Tests, see &lt;a href="http://msdn.microsoft.com/en-us/library/dd286726" target="_blank"&gt;Verifying Code by Using Coded User Interface Tests&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4bacc6" size="3"&gt;6. Associate Coded UI Test with Test Case&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;OK, so now we want to automate our Coded UI Test and have it run as part of the BDT workflow. You might think that you coded UI test already is automated, but the meaning of the term here is that you link your coded UI Test to an existing Test Case, thereby making the &lt;em&gt;Test Case &lt;/em&gt;automated. And the test case should be part of the test suite that we will run during the BDT.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open the solution that contains the coded UI test method.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Open the Test Case work item that you want to automate.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Go to the Associated Automation tab and click on the “…” button.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select the coded UI test that you corresponds to the test case:      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_18.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_8.png" width="890" height="306" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Press OK and the save the test case &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;br /&gt;For more information about associating an automated test case with a test case, see &lt;a href="http://msdn.microsoft.com/en-us/library/dd380741.aspx" target="_blank"&gt;How to: Associate an Automated Test with a Test Case&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4bacc6" size="3"&gt;7. Create Build Definition using LabDefaultTemplate&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now we are ready to create a build definition that will implement the full BDT workflow. For this purpose we will use the LabDefaultTemplate.11.xaml that comes out of the box in TFS 2012. This build process template lets you take the output of another build and deploy it to each target machine. Since the deployment process will be running on the target server, you will have less problem with permissions and firewalls than if you were to remote deploy your solution. &lt;/p&gt;  &lt;p&gt;So, before creating a BDT workflow build definition, make sure that you have an existing build definition that produces a release build of your application. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Go to the Builds hub in Team Explorer and select &lt;em&gt;New Build Definition&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Give the build definition a meaningful name, here I called it &lt;em&gt;MyApplication.Deploy&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_20.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_9.png" width="677" height="211" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Set the trigger to Manual      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_22.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_10.png" width="760" height="198" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Define a workspace for the build definition. Note that a BDT build doesn’t really need a workspace, since all it does is to launch another build definition and deploy the output of that build.      &lt;br /&gt;But TFS doesn’t allow you to save a build definition without adding at least one mapping.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On Build Defaults, select the build controller. Since this build actually won’t produce any output, you can select the “&lt;em&gt;This build does not copy output files to a drop folder&lt;/em&gt;” option.      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_11.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_2.png" width="753" height="328" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the process tab, select the LabDefaultTemplate.11.xaml. This is usually located at &lt;em&gt;$/TeamProject/BuildProcessTemplates/LabDefaultTemplate.11.xaml&lt;/em&gt;. To configure it, press the … button on the Lab Process Settings property      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;First, select the environment that you created before:     &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_41.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_19.png" width="828" height="251" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select which build that you want to deploy and test. The “Select an existing build” option is very useful when developing the BDT workflow, because you do not have to run through the target build every time, instead it will basically just run through the deployment and test steps which speeds up the process.     &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;Here I have selected to queue a new build of the &lt;em&gt;MyApplication.Test&lt;/em&gt; build definition      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_27.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_12.png" width="817" height="469" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the deploy tab, you need to specify how the application should be installed on the target server. You can supply a list of deployment scripts with arguments that will be executed &lt;strong&gt;on the target server. &lt;/strong&gt;In this example I execute the generated &lt;a href="http://msdn.microsoft.com/en-us/library/ff356104.aspx" target="_blank"&gt;web deploy command file&lt;/a&gt; to deploy the solution. If you for example have databases you can use sqlpackage.exe to deploy the database. If you are producing MSI installers in your build, you can run them using msiexec.exe and so on.      &lt;br /&gt;      &lt;br /&gt;A good practice is to create a batch file that contain the entire deployment that you can run both locally and on the target server. Then you would just execute the deployment batch file here in one single step.      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_29.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_13.png" width="830" height="521" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;The workflow defines some variables that are useful when running the deployments. These variables are:      &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;$(BuildLocation)       &lt;br /&gt;&lt;/strong&gt;The full path to where your build files are located      &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;$(InternalComputerName_&amp;lt;VM Name&amp;gt;)       &lt;br /&gt;&lt;/strong&gt;The computer name for a virtual machine in a SCVMM environment      &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;$(ComputerName_&amp;lt;VM Name&amp;gt;)       &lt;br /&gt;&lt;/strong&gt;The fully qualified domain name of the virtual machine      &lt;br /&gt;      &lt;br /&gt;As you can see, I specify the path to the myapplication.deploy.cmd file using the $(BuildLocation) variable, which is the drop folder of the MyApplication.Test build.       &lt;br /&gt;&lt;strong&gt;Note: &lt;/strong&gt;The test agent account must have read permission in this drop location.      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;You can find more information here on &lt;a href="http://msdn.microsoft.com/en-us/library/hh968963.aspx" target="_blank"&gt;Building your Deployment Scripts&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the last tab, we specify which tests to run after deployment. Here I select the test plan and the &lt;em&gt;Automated Tests&lt;/em&gt; test suite that we saw before:      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_35.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_16.png" width="840" height="371" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;Note that I also selected the automated test settings (called TargetServer in this case) that I have defined for my test plan. In here I define what data that should be collected as part of the test run.      &lt;br /&gt;      &lt;br /&gt;For more information about test settings, see &lt;a href="http://msdn.microsoft.com/en-us/library/ee231892.aspx" target="_blank"&gt;Specifying Test Settings for Microsoft Test Manager Tests&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;We are done! Queue your BDT build and wait for it to finish. If the build succeeds, your build summary should look something like this:   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_37.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/9c2a6c9ead7c_127E5/image_thumb_17.png" width="938" height="569" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/150625.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/c1Vt8w6OeQc" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/09/05/get-started-using-build-deploy-test-workflow-with-tfs-2012.aspx</guid>
            <pubDate>Wed, 05 Sep 2012 19:39:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/150625.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/09/05/get-started-using-build-deploy-test-workflow-with-tfs-2012.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/150625.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/150625.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/09/05/get-started-using-build-deploy-test-workflow-with-tfs-2012.aspx</feedburner:origLink></item>
        <item>
            <title>New functionality in TFS Build Manager &amp;ndash; Managing Triggers and Build Resources</title>
            <category>TFS</category>
            <category>Team Build</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/tB6rtTbEvvE/new-functionality-in-tfs-build-manager-ndash-managing-triggers-and.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/08/24/new-functionality-in-tfs-build-manager-ndash-managing-triggers-and.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/08/24/new-functionality-in-tfs-build-manager-ndash-managing-triggers-and.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Yesterday we pushed out a new release (August 2012) of the &lt;a href="http://tfsbuildextensions.codeplex.com/" target="_blank"&gt;Community TFS Build Extension&lt;/a&gt;, including a new version of the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/cfdb84b4-285e-4eeb-9fa9-dad9bfe2cd10" target="_blank"&gt;Community TFS Build Manager&lt;/a&gt; (1.0.4.6)&lt;/p&gt;  &lt;p&gt;The two big new features in the Build Manager in this release are:   &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;font size="4"&gt;Set Triggers&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;It is now possible to select one or more build definitions and update the triggers for them in one simple operation:    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_thumb.png" width="1134" height="418" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You’ll note that we have started collapsing the context menu a bit, the list of commands are getting long! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Ler" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;When selecting the Trigger command, you’ll see a dialog where the options should be self-explanatory:   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_thumb_1.png" width="582" height="309" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The only thing missing here is the Scheduled trigger option, you’ll have to do that using Team Explorer for now.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Manage Build Resources&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;The other feature is that it is now possible to view the build controllers and agents in your current collection and also perform some actions against them. The new functionality is available by select the Build Resources item in the drop down menu:    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_thumb_2.png" width="429" height="141" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Selecting this, you’ll see a (sort of) hierarchical view of the build controllers and their agents:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/image_thumb_4.png" width="995" height="317" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this view you can quickly see all the resources and their status. You can also view the build directory of each build agent and the tags that are associated with them.   &lt;br /&gt;On the action menu, you can enable and disable both agents and controllers (several at a time), and you can also select to remove them.    &lt;br /&gt;By selecting Manage, you’ll be presented with the standard Manage Controller dialog from Visual Studio where you can set the rest of the properties. Hopefully we’ll be able to implement most of the existing functionality so that we can remove that menu option &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Ler" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/TFS-Build-Manager_A019/wlEmoticon-smile_2.png" /&gt;    &lt;br /&gt;Our plan is to add more functionality to this view, such as adding new agents/controllers, restarting build service hosts, maybe view diagnostic information such as disk space and error logs. &lt;/p&gt;      &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Hope you’ll find the new functionality useful. Remember to log any bugs and feature requests on the CodePlex site.&lt;/p&gt;  &lt;p&gt;Happy building!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/150526.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/tB6rtTbEvvE" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/08/24/new-functionality-in-tfs-build-manager-ndash-managing-triggers-and.aspx</guid>
            <pubDate>Fri, 24 Aug 2012 12:28:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/150526.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/08/24/new-functionality-in-tfs-build-manager-ndash-managing-triggers-and.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/150526.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/150526.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/08/24/new-functionality-in-tfs-build-manager-ndash-managing-triggers-and.aspx</feedburner:origLink></item>
        <item>
            <title>New VS2012 Book: Pro Application Lifecycle Management with Visual Studio 2012</title>
            <category>TFS</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/pga94kK-h1o/new-vs2012-book-pro-application-lifecycle-management-with-visual-studio.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/08/23/new-vs2012-book-pro-application-lifecycle-management-with-visual-studio.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/08/23/new-vs2012-book-pro-application-lifecycle-management-with-visual-studio.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;During the spring/summer I have been involved with reviewing a new book about Visual Studio 2012 ALM from Apress called “Pro Application Lifecycle Management with Visual Studio 2012”&lt;/p&gt;  &lt;p&gt;The book is written by a fellow Visual Studio ALM MVP &lt;a href="http://msmvps.com/blogs/molausson/default.aspx" target="_blank"&gt;Mathias Olausson&lt;/a&gt; and his colleague Joachim Rossberg. It is a very comprehensive book that covers both all aspects of ALM in general and also how to implement these practices with Visual Studio 2012. The book also has several chapters dedicated to measuring your improvements by using ALM assessments and metrics.&lt;/p&gt;  &lt;p&gt;Read more about the book here on Mathias blog:   &lt;br /&gt;&lt;a title="http://msmvps.com/blogs/molausson/archive/2012/07/17/book-project-pro-application-lifecycle-management-with-visual-studio-2012-completed.aspx" href="http://msmvps.com/blogs/molausson/archive/2012/07/17/book-project-pro-application-lifecycle-management-with-visual-studio-2012-completed.aspx"&gt;http://msmvps.com/blogs/molausson/archive/2012/07/17/book-project-pro-application-lifecycle-management-with-visual-studio-2012-completed.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can pre-order the book here at Amazon:   &lt;br /&gt;&lt;a title="http://www.amazon.com/Application-Lifecycle-Management-Visual-Professional/dp/1430243449/" href="http://www.amazon.com/Application-Lifecycle-Management-Visual-Professional/dp/1430243449/"&gt;http://www.amazon.com/Application-Lifecycle-Management-Visual-Professional/dp/1430243449/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check it out! &lt;img style="" class="wlEmoticon wlEmoticon-smile" alt="Ler" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/New-Visual-Studio-2012-Book_1328A/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/150519.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/pga94kK-h1o" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/08/23/new-vs2012-book-pro-application-lifecycle-management-with-visual-studio.aspx</guid>
            <pubDate>Thu, 23 Aug 2012 19:57:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/150519.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/08/23/new-vs2012-book-pro-application-lifecycle-management-with-visual-studio.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/150519.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/150519.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/08/23/new-vs2012-book-pro-application-lifecycle-management-with-visual-studio.aspx</feedburner:origLink></item>
        <item>
            <title>ALM Rangers Readiness GIG has shipped!</title>
            <category>TFS</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/vQcjFhuSooY/alm-rangers-readiness-gig-has-shipped.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/08/16/alm-rangers-readiness-gig-has-shipped.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/08/16/alm-rangers-readiness-gig-has-shipped.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Together with todays announcement that Visual Studio 2012 as been officially released, the ALM Rangers have also simultaneously shipped (“sim-shipped”) a massive set of solutions for feature gaps and value-add guidance for the ALM community.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/visualstudioalm/archive/2012/08/15/welcome-to-visual-studio-2012-alm-rangers-readiness-wave.aspx" href="http://blogs.msdn.com/b/visualstudioalm/archive/2012/08/15/welcome-to-visual-studio-2012-alm-rangers-readiness-wave.aspx"&gt;http://blogs.msdn.com/b/visualstudioalm/archive/2012/08/15/welcome-to-visual-studio-2012-alm-rangers-readiness-wave.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find a complete list of ALM Ranger solutions here:   &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/vstudio/ee358787" href="http://msdn.microsoft.com/en-us/vstudio/ee358787"&gt;http://msdn.microsoft.com/en-us/vstudio/ee358787&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have been a part of the &lt;a href="http://vsarbuildguide.codeplex.com/" target="_blank"&gt;Team Foundation Build Customization Guide&lt;/a&gt;, which have been updated with new features in Visual Studio 2012, as well as the top requested features from the first version of the guidance. As part of this guidance, we have also developed the Community TFS Build Manager, a Visual Studio extension that simplifies a lot of tasks when working with TFS Build. It now exist both for &lt;a href="http://visualstudiogallery.msdn.microsoft.com/cfdb84b4-285e-4eeb-9fa9-dad9bfe2cd10" target="_blank"&gt;Visual Studio 2012&lt;/a&gt; as well as for &lt;a href="http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c" target="_blank"&gt;Visual Studio 2010&lt;/a&gt;. I’d like to thank the rest of the team for doing such a great job, especially &lt;a href="http://www.freetodev.com/" target="_blank"&gt;Mike Fourie&lt;/a&gt; who has been driving the entire project in style!&lt;/p&gt;  &lt;p&gt;I am proud to be a part of the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358786.aspx" target="_blank"&gt;ALM Rangers group&lt;/a&gt;, everybody involved put in a considerable amount of their (already limited) spare time to produce top quality guidance and tools for the community.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/150441.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/vQcjFhuSooY" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/08/16/alm-rangers-readiness-gig-has-shipped.aspx</guid>
            <pubDate>Thu, 16 Aug 2012 07:38:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/150441.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/08/16/alm-rangers-readiness-gig-has-shipped.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/150441.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/150441.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/08/16/alm-rangers-readiness-gig-has-shipped.aspx</feedburner:origLink></item>
        <item>
            <title>TFS Build: Dependency Replication using Community TFS Build Extensions</title>
            <category>TFS</category>
            <category>Team Build</category>
            <category>Visual Studio 2012</category>
            <link>http://feedproxy.google.com/~r/JakobEhn/~3/5rIXoy1hyQI/tfs-build-dependency-replication-using-community-tfs-build-extensions.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2012/07/15/tfs-build-dependency-replication-using-community-tfs-build-extensions.aspx'&gt;http://geekswithblogs.net/jakob/archive/2012/07/15/tfs-build-dependency-replication-using-community-tfs-build-extensions.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;   &lt;br /&gt;I have posted before on how to implement dependency replication using TFS Build, &lt;a href="http://geekswithblogs.net/jakob/archive/2009/03/05/implementing-dependency-replication-with-tfs-team-build.aspx" target="_blank"&gt;once for TFS 2008 using MSBuild&lt;/a&gt; and then for &lt;a href="http://geekswithblogs.net/jakob/archive/2010/12/08/dependency-replication-with-tfs-2010-build.aspx" target="_blank"&gt;TFS 2010 using Windows Workflow&lt;/a&gt;. The last post was not complete (I could not post all implementation details back then for various reasons), so I decided that I should post a new solution for this, but this time using the &lt;a href="http://tfsbuildextensions.codeplex.com/" target="_blank"&gt;Community TFS Build Extensions&lt;/a&gt; library. &lt;/p&gt;  &lt;p&gt;If it is a good idea to store your dependencies in source control or not is a question that is well debated. I’m not going to argue pros and cons here, but for those of you that want to go this way here is a build process template that will get you started. &lt;/p&gt;  &lt;p&gt;An interesting fact is that Microsoft actually have added this feature as part of the hosted TFS (TFS Services) running on Windows Azure, but decided post-Beta that this feature was not to be included in the on-premise version of TFS. The feature might reappear in the on-premise version at some point in the future but nothing is confirmed yet. For hosted TFS, this feature is a must since users would not be able to access the network shares that TFS Build normally use as drop location.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Features of the DependencyReplication.xaml build process template&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;I have added a new Build Process template called &lt;em&gt;DependencyReplication.xaml&lt;/em&gt; to the TFS Build Extensions that performs the following steps, in addition to the common default template:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Accepts a source control folder input parameter where the binaries should be stored (DeployFolder)      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Versions all assemblies, using the TfsVersion activity      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Copies to binaries to the the deploy folder      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Check in the binaries. The check-in comment includes the version number (using the TfsSource activity)      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;If any errors occurs as part of the replication, it will undo any pending changes as part of the build &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have uploaded the build process template to the CodePlex site, so it is available at &lt;em&gt;$/teambuild2010contrib/CustomActivities/MAIN/Source/BuildProcessTemplates/DependencyReplication.xaml&lt;/em&gt;.     &lt;br /&gt;&lt;strong&gt;     &lt;br /&gt;Note&lt;/strong&gt;: The build process template uses the &lt;a href="http://tfsbuildextensions.codeplex.com/SourceControl/changeset/changes/78108" target="_blank"&gt;latest version&lt;/a&gt; of the activities, so make sure that you download the latest source and compile it. I had to make some additions to the library to support the functionality of the build process template. The changes will be included in the next official release, but until then you must download the latest bits and build it yourself.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;     &lt;br /&gt;How to use the Build Process Template&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add the &lt;em&gt;DependencyReplication.xaml&lt;/em&gt; file to source control. You can add it wherever you like. This sample assumes that you add it to &lt;em&gt;$/Demo/BuildProcessTemplates/        &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Make sure that you have added the necessary TFSBuildExtension assemblies to the Version Control path for Custom assemblies. See &lt;a href="http://tfsbuildextensions.codeplex.com/wikipage?title=How%20to%20integrate%20the%20extensions%20into%20a%20build%20template&amp;amp;referringTitle=Documentation" target="_blank"&gt;this link&lt;/a&gt; for how to do this.       &lt;br /&gt;Since this template only uses a few of the build activities, you only need to add the following assemblies:       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;TfsBuildExtensions.Activites.dll          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;TfsBuildExtensions.TfsUtilities.dll          &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Ionic.Zip.dll          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Create a new build definition.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In the process tab, click the Show Details button      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Click &lt;em&gt;New&lt;/em&gt; and then the &lt;em&gt;Select an existing XAML file&lt;/em&gt; radio button and browse to the &lt;em&gt;DependencyReplication.xaml&lt;/em&gt; file that you just added:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/image_2.png"&gt;&lt;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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/image_thumb.png" width="845" height="198" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Note that you will now have an additional, required, process parameter called &lt;em&gt;DeployFolder&lt;/em&gt;, located in the &lt;em&gt;Misc&lt;/em&gt; category.       &lt;br /&gt;Enter the source control folder path where you want the binaries to be stored.       &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;Note: &lt;/strong&gt;This path must exist in source control, and must also be a part of the workspace for the current build definition otherwise the build will fail. This is a limitation of the current implementation. It can be implemented by modifying the workspace at build time, as I did in my first post on dependency replication.       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/image_4.png"&gt;&lt;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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/image_thumb_1.png" width="854" height="270" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;You must also change the &lt;em&gt;Build Number Format&lt;/em&gt; parameter to be &lt;strong&gt;&lt;em&gt;$(BuildDefinitionName)_1.0.0$(Rev:.r) &lt;/em&gt;&lt;/strong&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: This build process template uses the built-in functionality for incrementing the build number, so the version number will be a part of the build number itself which gives you a nice traceability between the build and the generated assemblies. It then parses the version number from the Build number, so you need to have the four-part version number as part of the build number format. If you have some other way of managing version numbers, you will need to change the build process template correspondingly.       &lt;br /&gt;      &lt;br /&gt;The 1.0.0 part above can obviously have any value, it will represent your Major.Minor.Revision part of the generated version number.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Save the build definition and queue a build      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;After the build has finished, you should see that the binaries have been added to source control in the given path.   &lt;br /&gt;    &lt;br /&gt;Note that all files in the binaries folder will be added to source control. If this is not what you want, you need to modify the build process template. An option here would be to add the filter expression (*.*) as a process parameter to make it configurable per build definition.     &lt;br /&gt;    &lt;br /&gt;If you download the binaries you should see that they have the same version number that was included in the build number for that particular build.     &lt;br /&gt;If you view history of the folder, you will see that the build service account (in my case the Network service) have checked in the files with a comment containing the version number:     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/image_8.png"&gt;&lt;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="image" border="0" alt="image" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/image_thumb_3.png" width="739" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;If you have check-in policies enabled for the team project, they will be overridden as part of the check-in with a comment.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I hope that you will find this build process template useful. It is by no means a full solution, it lacks some error checking and also it should handle the case where the DeployFolder path is outside the workspace for the build definition. Let me know if you really need this feature and I will consider adding it to the template &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Ler" src="http://gwb.blob.core.windows.net/jakob/Windows-Live-Writer/cc1f3b4d19cc_14136/wlEmoticon-smile_2.png" /&gt;. Of course, you can add it yourself and post it back to the community.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/150234.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JakobEhn/~4/5rIXoy1hyQI" height="1" width="1"/&gt;</description>
            <dc:creator>Jakob Ehn</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2012/07/15/tfs-build-dependency-replication-using-community-tfs-build-extensions.aspx</guid>
            <pubDate>Sun, 15 Jul 2012 21:51:33 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jakob/comments/150234.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jakob/archive/2012/07/15/tfs-build-dependency-replication-using-community-tfs-build-extensions.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/150234.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/150234.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/jakob/archive/2012/07/15/tfs-build-dependency-replication-using-community-tfs-build-extensions.aspx</feedburner:origLink></item>
    </channel>
</rss>
