{"id":66,"date":"2026-10-14T17:51:19","date_gmt":"2026-10-14T17:51:19","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2016\/08\/08\/introducing-team-foundation-build-2010\/"},"modified":"2026-10-14T17:51:19","modified_gmt":"2026-10-14T17:51:19","slug":"introducing-team-foundation-build-2010","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/introducing-team-foundation-build-2010\/","title":{"rendered":"Team Foundation Build 2010: Architecture, Build Definitions, and Migration from TFS 2008"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.devopsschool.com\/blog\/introducing-team-foundation-build-2010\/\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2016\/08\/introducing-team-foundation.png\" alt=\"Team Foundation Build 2010 overview\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Team Foundation Build 2010 (part of TFS 2010) is a legacy Microsoft build automation system that many enterprises still encounter in long-lived .NET delivery pipelines. This guide is written for engineers who need a clear operational model: how build controllers and agents work, how build definitions are structured, what to customize, and what to watch for when migrating from TFS 2008-era builds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2016-08-08T01:07:57; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Original post: <a href=\"https:\/\/www.devopsschool.com\/blog\/introducing-team-foundation-build-2010\/\">Introducing Team Foundation Build 2010 | TFS 2010 Training<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What this topic covers in practical terms<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original article was a training-style outline (introduction, architecture, setup demos, build definitions, templates, and migration). Reframed for day-to-day engineering work, that scope becomes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Designing a stable build topology (machines, controller, agents, drop location).<\/li><li>Defining build triggers and workspace mappings correctly.<\/li><li>Customizing build behavior through process templates and MSBuild arguments.<\/li><li>Running and troubleshooting builds in a repeatable way.<\/li><li>Migrating older TFS 2008 build practices into the TFS 2010 model.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Build architecture: controller, agents, and artifacts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Team Build 2010 separates orchestration from execution. A build controller receives queued builds and assigns them to available agents, which perform checkout, compilation, tests, and publishing.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>Primary responsibility<\/th><th>Operational note<\/th><\/tr><\/thead><tbody><tr><td>Build Controller<\/td><td>Queues and coordinates build jobs<\/td><td>Keep controller availability high; it is central to scheduling.<\/td><\/tr><tr><td>Build Agent<\/td><td>Executes compile\/test\/package steps<\/td><td>Agent capabilities and installed toolchains affect build success.<\/td><\/tr><tr><td>Build Definition<\/td><td>Stores trigger, workspace, defaults, and process configuration<\/td><td>Treat as versioned operational config.<\/td><\/tr><tr><td>Drop Folder<\/td><td>Stores build outputs and artifacts<\/td><td>Use a reliable network path and retention policy.<\/td><\/tr><tr><td>TFS Project\/Collection<\/td><td>Hosts source, metadata, and build history<\/td><td>Permissions and policy settings directly affect build flow.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Typical Team Build 2010 workflow<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Developer check-in] --> B[Build trigger fires]\n    B --> C[Build Controller queues job]\n    C --> D[Build Agent gets sources]\n    D --> E[Compile and run tests]\n    E --> F[Publish outputs to drop]\n    F --> G[Update build report]\n    G --> H[Notify team]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Build definition choices that change pipeline behavior<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In TFS 2010, build definition settings (General, Trigger, Workspace, Build Defaults, Process) are where most reliability decisions are made.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Trigger type<\/th><th>Best for<\/th><th>Trade-off<\/th><\/tr><\/thead><tbody><tr><td>Manual<\/td><td>Controlled releases and ad-hoc verification<\/td><td>No automatic feedback after check-in.<\/td><\/tr><tr><td>Continuous Integration<\/td><td>Fast feedback on every change<\/td><td>High commit volume can increase queue pressure.<\/td><\/tr><tr><td>Scheduled<\/td><td>Nightly full builds and longer test suites<\/td><td>Defects may be detected later than CI.<\/td><\/tr><tr><td>Gated Check-in<\/td><td>Protecting branch quality before commit completes<\/td><td>Higher latency for developers during check-in.<\/td><\/tr><tr><td>Private build<\/td><td>Personal validation before shared integration<\/td><td>Can duplicate compute usage if overused.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Build environment setup checklist<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Install and register the build service on target machine(s).<\/li><li>Create and assign a build controller.<\/li><li>Attach one or more agents to the controller.<\/li><li>Configure a reachable drop location with correct permissions.<\/li><li>Define workspace mappings for the intended branch paths.<\/li><li>Create a simple baseline build definition and run it end-to-end.<\/li><li>Confirm artifact retention and cleanup settings early.<\/li><li>Enable status notifications for fast failure visibility.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Process templates and customization approach<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Team Build 2010 introduced workflow-based build process templates. A practical pattern is to keep template customization minimal and push project-specific logic into MSBuild targets or scripts that are source-controlled with the application.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: MSBuild invocation used by build logic<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">msbuild .\\YourSolution.sln \/t:Rebuild \/p:Configuration=Release \/p:RunCodeAnalysis=<span class=\"hljs-literal\">true<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Migration lens: TFS 2008 build model vs TFS 2010 build model<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Area<\/th><th>TFS 2008 pattern<\/th><th>TFS 2010 pattern<\/th><th>Migration focus<\/th><\/tr><\/thead><tbody><tr><td>Build orchestration<\/td><td>More tightly script-centric<\/td><td>Controller\/agent orchestration model<\/td><td>Plan machine roles and queue behavior.<\/td><\/tr><tr><td>Customization style<\/td><td>MSBuild script customization<\/td><td>Workflow template plus MSBuild\/script integration<\/td><td>Keep custom logic maintainable and versioned.<\/td><\/tr><tr><td>Check-in quality control<\/td><td>Primarily policy\/process driven<\/td><td>Includes gated check-in options<\/td><td>Balance protection with developer throughput.<\/td><\/tr><tr><td>Execution topology<\/td><td>Often single build host setups<\/td><td>Distributed execution through agents<\/td><td>Standardize toolchains across agents.<\/td><\/tr><tr><td>Reporting and notifications<\/td><td>Basic build visibility<\/td><td>Richer build status and alerting workflows<\/td><td>Define who receives which alerts and when.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Operational command examples<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on your installation and tooling, teams commonly combine source workspace mapping, MSBuild execution, and queued Team Build runs.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">tf workfold \/map <span class=\"hljs-string\">\"$\/YourTeamProject\/Main\"<\/span> <span class=\"hljs-string\">\"C:\\Builds\\Main\"<\/span>\nmsbuild .\\YourSolution.sln \/t:Rebuild \/p:Configuration=Release\ntfsbuild start \/collection:http:<span class=\"hljs-comment\">\/\/tfs-server:8080\/tfs\/DefaultCollection \/teamproject:YourTeamProject \/definition:CI_Main<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><em>Note:<\/em> command availability and switches can vary by TFS update level, installed client tools, and local conventions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Best practices for legacy Team Build 2010 environments<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Document controller\/agent topology and ownership clearly.<\/li><li>Pin and audit build tool versions on every agent.<\/li><li>Keep build definitions and template changes under change control.<\/li><li>Use gated check-in selectively on high-value branches.<\/li><li>Continuously prune drop artifacts to avoid storage and performance drift.<\/li><li>Alert on queue backlog and repeated flaky failures, not only hard failures.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Team Foundation Build 2010 introduced a controller\/agent build architecture, richer build definitions, and gated check-in workflows for TFS teams. This revised guide turns the original topic list into a practical reference for setup, customization, and migration planning.<\/p>\n","protected":false},"author":1,"featured_media":3049,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[26,8],"tags":[1129,91,1133,1128,1127,854,1130,1134,1135,1131,1132,1137,1136],"class_list":["post-66","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tfs","category-training","tag-1129","tag-build","tag-build-automation","tag-foundation","tag-introduction","tag-team","tag-team-foundation-build-2010","tag-team-foundation-build-2010-course","tag-team-foundation-build-2010-training","tag-tfs-2010","tag-tfs-2010-introduction","tag-tfs-2010-training","tag-tfs-2010-updates"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=66"}],"version-history":[{"count":5,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/66\/revisions"}],"predecessor-version":[{"id":79368,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/66\/revisions\/79368"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3049"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}