{"id":3793,"date":"2006-08-09T15:29:00","date_gmt":"2006-08-09T15:29:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/buckh\/2006\/08\/09\/team-build-extensibility\/"},"modified":"2006-08-09T15:29:00","modified_gmt":"2006-08-09T15:29:00","slug":"team-build-extensibility","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/buckh\/team-build-extensibility\/","title":{"rendered":"Team Build Extensibility"},"content":{"rendered":"<p><P>There&#8217;s a document in the Visual Studio 2005 SDK that describes the extensibility points in Team Build.&nbsp; I have the April release of the SDK, so it&#8217;s located at <FONT face=\"Courier New\">C:\\Program Files\\Visual Studio 2005 SDK\\2006.04\\VisualStudioTeamSystemIntegration\\Team Build\\Team Build Extensibility.doc<\/FONT>.<\/P>\n<P>The SDK is a huge download, so I&#8217;m attaching the document to this blog post.<\/P>\n<P>Here&#8217;s what&#8217;s covered in the document.<\/P>\n<UL>\n<LI>Understanding Team Foundation Build configuration files \n<UL>\n<LI>Order in which targets are executed by Team Foundation Build<\/LI><\/UL>\n<LI>Extending Team Foundation Build \n<UL>\n<LI>Creating a Build Type \n<LI>Creating Custom Tasks \n<LI>Checking Out the TfsBuild.proj File \n<LI>Registering Your Task \n<LI>Calling Your Task \n<LI>Checking In the TfsBuild.proj and Task .dll Files<\/LI><\/UL>\n<LI>Example Task \n<UL>\n<LI>C# Task Code Example \n<LI>Sample TfsBuild.proj File<\/LI><\/UL><\/LI><\/UL>\n<P>One useful piece of information is the order in which the targets are executed.&nbsp; I&#8217;ve copied that section below, and the ones marked with an asterisk are specifically designed to be overridden for adding custom behavior (overriding the Core* targets may result in you needing to fix your project files when future versions are released).<\/P>\n<BLOCKQUOTE>\n<P>1.&nbsp;BeforeEndToEndIteration*<BR>2.&nbsp;BuildNumberOverrideTarget*<BR>3.&nbsp;InitializeEndToEndIteration<BR>4.&nbsp;BeforeClean*<BR>5.&nbsp;CoreClean<BR>6.&nbsp;AfterClean*<BR>7.&nbsp;Clean<BR>8.&nbsp;InitializeBuild<BR>9.&nbsp;BeforeGet*<BR>10.&nbsp;InitializeWorkspace<BR>11.&nbsp;CoreGet<BR>12.&nbsp;AfterGet*<BR>13.&nbsp;PreBuild<BR>14.&nbsp;BeforeCompile*<BR>15.&nbsp;CoreCompile<BR>16.&nbsp;AfterCompile*<BR>17.&nbsp;Compile<BR>18.&nbsp;GetChangeSetsAndUpdateWorkItems<BR>19.&nbsp;PostBuild<BR>20.&nbsp;BeforeTest*<BR>21.&nbsp;CoreTest<BR>22.&nbsp;AfterTest*<BR>23.&nbsp;Test<BR>24.&nbsp;PackageBinaries*<BR>25.&nbsp;TeamBuild<BR>26.&nbsp;BeforeDropBuild*<BR>27.&nbsp;CoreDropBuild<BR>28.&nbsp;CopyLogFiles<BR>29.&nbsp;AfterDropBuild*<BR>30.&nbsp;DropBuild<BR>31.&nbsp;AfterEndToEndIteration*<BR>32.&nbsp;EndToEndIteration<\/P>\n<P>The targets marked by an \u201c*\u201d are those defined for extensibility and you should plug in your tasks using one of these depending on your need. It is not recommended to modify other targets because Team Foundation Build calls its own pre-defined tasks in those other targets.<\/P><\/BLOCKQUOTE>\n<P dir=\"ltr\">[Update]&nbsp; I just noticed that <A href=\"http:\/\/blogs.msdn.com\/echarran\/archive\/2006\/08\/07\/691080.aspx\">Eric Charran has a similar post<\/A> from earlier this week.&nbsp; He points to the MSDN docs that provide a short explanation for each: <A href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/aa337604.aspx\">http:\/\/msdn2.microsoft.com\/en-us\/library\/aa337604.aspx<\/A>.<\/P><\/p>\n<p><a href=\"https:\/\/msdnshared.blob.core.windows.net\/media\/MSDNBlogsFS\/prod.evol.blogs.msdn.com\/CommunityServer.Components.PostAttachments\/00\/00\/69\/36\/04\/Team%20Build%20Extensibility.doc\">Team Build Extensibility.doc<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There&#8217;s a document in the Visual Studio 2005 SDK that describes the extensibility points in Team Build.&nbsp; I have the April release of the SDK, so it&#8217;s located at C:\\Program Files\\Visual Studio 2005 SDK\\2006.04\\VisualStudioTeamSystemIntegration\\Team Build\\Team Build Extensibility.doc. The SDK is a huge download, so I&#8217;m attaching the document to this blog post. Here&#8217;s what&#8217;s covered [&hellip;]<\/p>\n","protected":false},"author":94,"featured_media":10268,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[7,8],"class_list":["post-3793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-team-build","tag-team-foundation"],"acf":[],"blog_post_summary":"<p>There&#8217;s a document in the Visual Studio 2005 SDK that describes the extensibility points in Team Build.&nbsp; I have the April release of the SDK, so it&#8217;s located at C:\\Program Files\\Visual Studio 2005 SDK\\2006.04\\VisualStudioTeamSystemIntegration\\Team Build\\Team Build Extensibility.doc. The SDK is a huge download, so I&#8217;m attaching the document to this blog post. Here&#8217;s what&#8217;s covered [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts\/3793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/users\/94"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/comments?post=3793"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts\/3793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/media\/10268"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/media?parent=3793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/categories?post=3793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/tags?post=3793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}