Team Foundation Build Activity Reference is now available

The Team Foundation Build Default Template enables you to define a build process that can perform the basic tasks you expect from your build system. Use MSBuild to build the bits, run MSTest to test the bits, label the code, publish symbols to SymStore, drop the binaries in a folder, etc. DefaultTemplate.xaml has got you covered; you can get your build process defined and running in a matter of minutes.

But suppose you need your build process to run some custom process against the binaries after building the code. Or to publish some documentation to a web server. My anecdotal experience from monitoring various virtual user groups has left me with the impression is that specialized build processes are the norm rather than the rule.

If you are one of these customers, here is my holiday present to you, hot off the presses:

Team Foundation Build Activities

This article describes in detail the Team Foundation Build Activities, which are the fundamental components of the build process. I wrote this topic with hopes of making it as easy as possible for you to create your own custom build process.

Floor wax and dessert topping

As I researched this content, I saw two major use patterns: reference and usage guide. A reference answers questions such as: What does this activity do?  What is this property for? But I also wanted to help the developer working from the other side of the equation, focused on a specific goal they have in mind.  So the answer to whether I should structure the content as a reference or as a usage guide was: both; both a floor wax and a dessert topping.

Reference: How do I work this?


toolbox and reference I know that many readers need the answer the question best expressed by the Talking Heads: “How do I work this?” So in the topic you will find an alphabetical list that contains a link to information about each activity.

Usage guide: How do I get there from here?


goals Whenever I get an opportunity to spend some time writing code, I hope for but often don’t get a goal-oriented guide to the classes, methods, functions, or whatever set of constructs I’m working with. So in the topic I offer a list of goals. I also organized the material by goal to support easier reading from end to end.

Leaves a shine? Tastes great? Other?

One other major design decision I made was to use a minimalist approach wherever possible. I enumerate the properties in lightweight bulleted lists instead of tables. I am intentionally inconsistent, abbreviating sections that cover simple activities. When I need to point to a deeply embedded element in the workflow, I use a terse but hopefully easily traversed format (as described in Navigate in a Complex Windows Workflow).

How does the format of Team Foundation Build Activities work for you? Any information not covered that you need? As always, I welcome your feedback.


Comments (7)

  1. Anonymous says:

    Andy – Thank you for working on this documentation. It is indeed helpful, all be it not very practical. I'd love to see 3 sample build activities (say FTP a file, write to the event log, and build an MSI) be provided as reference documentation on how to use WF within the new team build environment. The documentation has been lacking to date and thus we've evaluated other solutions.…/2edf6708-a9f3-4e44-a037-abdf1495310d

  2. Anonymous says:

    This is a life saver.  Much appreciated!

  3. Anonymous says:


    The link in Navigate in a Complex Windows Workflow, is an internal link.

  4. Anonymous says:

    Dessert is spelled with two letter "s" because you always want more.

  5. Apologies for the delay in seeing your comments and my responses.  Apparently this blog is having technical difficulties. I'll need to look into why the blog software is not working the way I expect.

    Allen: Thanks for the suggestions.  Plans to write this kind of coverage are in the top tier of my backlog.

    Bertrand & Davin: Thanks for finding and pointing out these issues.  They are now fixed.

  6. Anonymous says:

    That documentation says that FindMissingFiles supports patterns like String.Format("{0}txtfiles*.txt", SourcesDirectory), but I'm getting "The search pattern C:Builds1ProjectContinuous IntegrationSourcespackage*.zip is not a valid search pattern" when I have "package" after the "**"…  Is the documentation wrong, or am I missing something?

  7. Anonymous says:

    A great resource for a learner, and I totally get your dual purpose.   Great stuff!

    I'd suggest to complete the quick reference aspect, and to aid in learners getting a mental map of the activities that a GRAPHIC that lays out the activities, functionally arranged with icons and some details (probably just properties) will do the trick. I've done these before and can send you a sample.  Some people, you know, learn more visually than with text.