{"id":2193,"date":"2007-07-20T22:02:00","date_gmt":"2007-07-20T22:02:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/buckh\/2007\/07\/20\/tfs-2008-build-agent-configuration-options\/"},"modified":"2007-07-20T22:02:00","modified_gmt":"2007-07-20T22:02:00","slug":"tfs-2008-build-agent-configuration-options","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/buckh\/tfs-2008-build-agent-configuration-options\/","title":{"rendered":"TFS 2008: Build agent configuration options"},"content":{"rendered":"<p><P>While some of the build agent properties are available in the VS GUI, buried in the tfsbuildservice.exe.config file are a number of options that control key aspects of the build agent and the build.&nbsp; This file existed in TFS 2005, but it had fewer options.&nbsp; While you don&#8217;t have to change anything for the build agent to work in the normal case, there are&nbsp;options here that will help you get more out of the product.&nbsp; In future releases, these types of options will be exposed in better ways (e.g., GUI).<\/P>\n<P>Everything described below applies to TFS 2008 Beta 2 through TFS 2008 RTM.&nbsp; Many of these settings were also in Beta 1, for those of you that are experimenting with that release (if the setting doesn&#8217;t appear in the tfsbuildservice.exe.config on your build computer, then it was added after Beta 1).&nbsp; Some of these features were <A href=\"http:\/\/blogs.msdn.com\/buckh\/archive\/2006\/12\/02\/more-on-the-orcas-features-for-team-build.aspx\">described earlier<\/A>&nbsp;but with much less detail.<\/P>\n<P>Any time you make a change to the tfsbuildservice.exe.config file, you must restart the Visual Studio Team Foundation Build service (from the Windows Start menu, choose Run and execute services.msc, select the service and click Restart).<\/P>\n<P><STRONG>Building independent projects simultaneously<\/STRONG><\/P>\n<P>The msbuild included with the .NET Framework version 3.5 has the capability of using <A href=\"http:\/\/blogs.msdn.com\/msbuild\/archive\/2007\/04\/26\/building-projects-in-parallel.aspx\">multiple processes to build<\/A>&nbsp;projects in your solution that are independent of one another.&nbsp; In TFS Build, the default is to continue to use only one process&nbsp;for maximum backwards compatibility.&nbsp;&nbsp;To make&nbsp;use of this new feature, &nbsp;you&#8217;ll want to set the&nbsp;<FONT face=\"Courier New\">MaxProcesses<\/FONT> setting to a different number.&nbsp; One general rule of thumb is to set it to twice the number of processors or cores in your computer.&nbsp; Finding the optimum value, though, will require experimentation with your own builds since that depends on the I\/O and CPU characteristics of your builds.&nbsp; Aaron wrote about this <A href=\"http:\/\/blogs.msdn.com\/aaronhallberg\/archive\/2007\/06\/20\/team-build-and-multiproc-msbuild.aspx\">recently<\/A>.<\/P>\n<P><STRONG>Running GUI tests as part of your builds<\/STRONG><\/P>\n<P>A Windows service doesn&#8217;t have access to a desktop, and thus the standard configuration of the build agent cannot run unit tests that involve GUIs.&nbsp; You can do that, however, if you log onto the build computer as the user account that you want running your builds and simply run tfsbuildservice.exe from a Visual Studio 2008 Command Prompt.&nbsp; Leave the logon session up, and tfsbuildservice will run indefinitely.&nbsp; We call this running the build agent &#8220;interactively&#8221; for lack of a better term.&nbsp; In the config file below, you will find the&nbsp;<FONT face=\"Courier New\">InteractivePort<\/FONT> setting.&nbsp; That port number, which defaults to 9192, is used by the interactive build agent.&nbsp; When you configure the build agent in the Visual Studio GUI, simply change the default port of 9191 in the Build Agent Properties dialog to be 9192 instead.&nbsp; Now you can run GUI tests as part of your build!<\/P>\n<P>See&nbsp;<A class=\"\" href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/9d102aca-89b5-4d1c-aafc-94590022a96a(VS.90).aspx\"><FONT color=\"#555555\">How to: Configure an Interactive Port for Team Foundation Build<\/FONT><\/A>&nbsp;for the steps.<\/P>\n<P><STRONG>Requiring an authenticated user connection to the build agent<\/STRONG><\/P>\n<P>In TFS 2005, the communication between the TFS application tier (AT) and the build agent used .NET Remoting.&nbsp; With the advent of Windows Communication Foundation (WCF) in .NET Framework version 3.0, we were able to <A href=\"http:\/\/blogs.msdn.com\/buckh\/archive\/2007\/03\/16\/orcas-team-build-wcf-web-services-replace-net-remoting.aspx\">change to using SOAP web services<\/A> like the rest of TFS without requiring that IIS be installed on the build agent.&nbsp;&nbsp;In TFS 2008, we default to&nbsp;requiring that every connection to the build agent is authenticated via NTLM,&nbsp;which is the <FONT face=\"Courier New\">AuthenticationScheme<\/FONT> setting.&nbsp; However, it could still be any valid Windows account.&nbsp; To further secure your build agent, you can now also specify the service account under which that TFS AT is running as the only user allowed to connect to the build agent.&nbsp; That setting is the <FONT face=\"Courier New\">AuthorizedUser<\/FONT>.<\/P>\n<P><STRONG>Using HTTPS, possibly with X.509 certificates<\/STRONG><\/P>\n<P>TFS 2008 supports X.509 certificates.&nbsp; As part of that work, we added the capability to use HTTPS to secure the web service communication channel between the application tier and the build agent.&nbsp; To require that HTTPS be used to connect to the build agent, simply set the <FONT face=\"Courier New\">RequireSecureChannel<\/FONT> setting to true.&nbsp; You will also need to set the checkbox in the Build Agent Properties dialog for the build agent in Visual Studio (Build -&gt; Manage Build Agents, then choose Edit to modify an existing agent or New to create a new one).&nbsp; Additionally, you can require that the communication to the build agent use X.509 certificates by setting <FONT face=\"Courier New\">RequireClientCertificate<\/FONT> to true.<\/P>\n<P><STRONG>Extranet support<\/STRONG><\/P>\n<P>We&#8217;ve still got a ways to go to provide true extranet or internet support, but we&#8217;ve made some improvements in this area.&nbsp; When the TFS AT calls the build agent, it sends the build agent its URL.&nbsp; That URL comes from the AT&#8217;s web.config file.&nbsp; It&#8217;s value is set when the TFS AT was installed.&nbsp; It typically uses the short name of the server.&nbsp; For example, it&#8217;s typically http:\/\/mytfsserver:8080 rather than http:\/\/mytfsserver.somedomain.corp.company.com:8080.&nbsp; If your build agent needs to contact that server using either that fully qualified domain domain (FQDN) or perhaps an entirely alternate name, such as http:\/\/secretserver.extranet.company.com:7070, you can set the <FONT face=\"Courier New\">ServerAccessUrl<\/FONT> setting to be that other URL.&nbsp; The <FONT face=\"Courier New\">AllowedTeamServer<\/FONT> setting must still match the URL sent by the AT, so it would typically hold the short form.<\/P>\n<P>The <FONT face=\"Courier New\">AllowedTeamServer<\/FONT> setting exists also in TFS 2005, but you&#8217;ve likely never seen or even heard of it unless you need to change which TFS AT the build agent will listen to.&nbsp; That&#8217;s because that when that key is not set, the URL of the first AT that successfully communicates with the build agent is stored in the registry (HKCU for the account under which the build agent is running).&nbsp; Its role and behavior has not changed in TFS 2008.<\/P>\n<P>At the risk of getting lost in minutia, I want to explain one more related aspect.&nbsp; Feel free to skip this part if it&#8217;s not clear.&nbsp; To determine whether the AT that is connecting to the build agent is the correct (allowed) server, the build agent will compare the value in <FONT face=\"Courier New\">AllowedTeamServer<\/FONT> or the HKCU registry (.config file setting has precedence) to the server URL sent by the AT.&nbsp; If the two match, it continues processing the request.&nbsp; If they do not match, the build agent tries to determine if it&#8217;s really the right AT but with a different name.&nbsp; To do that, it requests the GUID from both the server specified by the URL that was sent with the request and the server specified by its configured server URL.&nbsp; If the two match, it continues.&nbsp; If they don&#8217;t, it will reject the request.&nbsp; In TFS 2005, the build agent would call the domain name server (DNS) to get the IP addresses to do the comparison.&nbsp; The change to using each server&#8217;s GUID is an incremental improvement that will help folks who&#8217;ve had problems with this in the past.<\/P>\n<P>Oh, and don&#8217;t forget that if your build agent is separated from you TFS AT via a low-bandwidth connection, you can set the <A href=\"http:\/\/blogs.msdn.com\/buckh\/archive\/2007\/03\/07\/configuring-the-build-to-use-the-version-control-proxy.aspx\">build agent to use the version control proxy<\/A>.<\/P>\n<P><STRONG>Possible support for future versions of msbuild<\/STRONG><\/P>\n<P>While we don&#8217;t know what the future of msbuild holds, we do know that the TFS 2005 build agent cannot run the new msbuild in .NET Framework 3.5 because the code gets the CLR runtime directory to determine the location of msbuild.exe.&nbsp; Those who&#8217;ve paid close attention to the difference between the CLR and the framework will know that the CLR version in Visual Studio 2008 remains 2.0, while the framework is obviously 3.5.&nbsp; The result is that the TFS 2005 build agent will only execute the 2.0 version of msbuild.&nbsp; To attempt to be a bit more future proof (no guarantees, of course), we&#8217;ve included a setting that allows you to specify the path to msbuild.exe.&nbsp; This means that if the .NET Framework 4.0, for example, contains a new version of msbuild (3.0, by the way, did not), you would be able to specify the path in the <FONT face=\"Courier New\">MSBuildPath<\/FONT> setting to have the TFS 2008 build agent use it.&nbsp; There&#8217;s no way to know for sure at this point whether it would work, of course, but at least you&#8217;ll have the option.<\/P>\n<P><STRONG>Separate log files per project<\/STRONG><\/P>\n<P>Have you ever wanted to have a separate build log file per project?&nbsp; Well, we know some of you do, because it&#8217;s come up on the <A href=\"http:\/\/forums.microsoft.com\/MSDN\/ShowForum.aspx?ForumID=481&amp;SiteID=1\">MSDN Build Automation<\/A> forum a number of times.&nbsp; If you set <FONT face=\"Courier New\">LogFilePerProject<\/FONT> to true, you will get that.<\/P>\n<P><STRONG>Better support for source files with really long paths<\/STRONG><\/P>\n<P>A number of users ran into problems in the TFS 2005 build agent where they had trouble building their applications because the paths to the source files were really long.&nbsp; The TFS 2005 build agent would create a build directory path that consisted of the build directory set via the GUI dialog or the tfsbuild.proj file, the team project name, the build type name, and then the word &#8220;Sources.&#8221;&nbsp; The result was that users were left with substantially less than the Window&#8217;s path limit of 260 characters to work with (<A href=\"http:\/\/blogs.msdn.com\/bclteam\/archive\/2007\/02\/13\/long-paths-in-net-part-1-of-3-kim-hamilton.aspx\">yes, Windows supports 32K character paths, but .NET doesn&#8217;t<\/A>).<\/P>\n<P>In TFS 2008, you have options to deal with this.&nbsp; Aaron provides the details <A href=\"http:\/\/blogs.msdn.com\/aaronhallberg\/archive\/2007\/06\/20\/team-build-and-260-character-paths.aspx\">here<\/A>.&nbsp; The short version is that you can set the root of the build directory in the Build Agent Properties dialog.&nbsp; If it&#8217;s still not short enough, you can use the SourcesSubdirectory setting to shorten the word &#8220;Sources&#8221; to &#8220;s&#8221; if you want.&nbsp; So you can end up with something&nbsp;as short as&nbsp;C:\\b\\s, if you need.<\/P>\n<P><STRONG>Conclusion<\/STRONG><\/P>\n<P>We&#8217;ve provided a number of new options for the build agent in TFS 2008.&nbsp; While it&#8217;s far from ideal that you need to edit a .config file and restart the Windows service for the changes to take effect, we&#8217;ve at least gotten support in there to address some of these issues.&nbsp; In future releases, we&#8217;ll be working to make these and other options easier to work with.<\/P>\n<P>I&#8217;ve copied the contents of %ProgramFiles%\\Microsoft Visual Studio 9.0\\Common7\\IDE\\PrivateAssemblies\\tfsbuildservice.exe.config below for reference (minus the tracing information at the top of the file).&nbsp; As you can see, we tried to document the settings to make it easier to know how to change them.&nbsp; Hopefully, there&#8217;s enough here to get you going.<\/P>\n<BLOCKQUOTE><PRE><SPAN>&lt;?<\/SPAN>xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243; <SPAN>?&gt;<\/SPAN>\n<SPAN>&lt;<\/SPAN><SPAN>configuration<\/SPAN><SPAN>&gt;<\/SPAN> \n<SPAN>&lt;<\/SPAN><SPAN>appSettings<\/SPAN><SPAN>&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;!&#8211; port\nThis is the port that is used by the Team Foundation Server\nApplication Tier to connect to agents hosted by this executable\nwhen it is run as a windows service. This value has to be the \nsame as the value specified for the agent(s) in the Application \nTier.\n&#8211;&gt;<\/SPAN>\n<SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;port&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;9191&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; InteractivePort\nThis is the port that is used by the Team Foundation Server\nApplication Tier to connect to agents hosted by this executable\nwhen it is run as a command-line application. This value has to\nbe the same as the value specified for the agent(s) in the \nApplication Tier.\n&#8211;&gt;<\/SPAN>\n<SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;InteractivePort&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;9192&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; AuthenticationScheme\nThis string controls what type of authentication will be accepted for\nincoming connections. The following values are supported:\nAnonymous, Digest, Negotiate, Ntlm\nWhen specifying Negotiate, the Build Service Account must satisfy one\nof the following conditions in order for Kerberos authentication to\nwork:\n&#8211; If on a workgroup, it must be NT AUTHORITY\\Local Service\n&#8211; If on a domain, it must be NT AUTHORITY\\Network Service or the account must have a valid SPN\nThe Basic authentication scheme is not supported.\n&#8211;&gt;<\/SPAN>\n<SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;AuthenticationScheme&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;Ntlm&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; AuthorizedUser\nThis key provides a mechanism to restrict all access to the agent service\nto a single account. If this value is set then a transport authentication\nscheme of Basic, Digest, Negotiate, or Ntlm must be used.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;AuthorizedUser&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;!&#8211; RequireSecureChannel\nThis boolean value controls whether or not transport-layer security \nshould be used for the exposed service. Normally, HTTP is used for\ncommunications which may not be desirable for a machine exposed on\nthe internet. Set this value to true to expose the service using\nHTTPS instead. This value has to be the same as the value specified \nfor the agent(s) in the Application Tier.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;RequireSecureChannel&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;false&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; RequireClientCertificate\nThis boolean controls whether or not a client certificate should be\nrequired when using a secure channel.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;RequireClientCertificate&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;false&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;!&#8211; AllowedTeamServer\nThis is the Team Foundation Server Application Tier that can connect\nto this build machine. This value should be the URL for the AT,\nsuch as http:\/\/myserver:8080&gt;.\nThis value overrides the setting in HKCU.\n&#8211;&gt;<\/SPAN><SPAN><BR>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;AllowedTeamServer&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; ServerAccessUrl\nThis only needs to be set when the URL required to communicate to\nthe Team Foundation Server Application Tier (AT) is different than the\none specified in AllowedTeamServer.\nThe most common case would be when the AT and the build\nagent are separated by the internet. For example, AllowedTeamServer\nmay need to be &lt;http:\/\/myserver:8080&gt;, but the build agent may need to use\nhttp:\/\/boundaryserver.corp.company.com:80&gt; to connect to the AT.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;ServerAccessUrl&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; BuildOnFatPartitions\nAs a part of the build process, access controls are set on the build\ndirectory to secure it against unauthorized access. By default, only\nNTFS partitions are allowed as FAT partitions do not support access\ncontrols. To override this and allow building on FAT partitions set \nthis value to true.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;BuildOnFatPartitions&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;false&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; DoNotDownloadBuildType\nSet this flag to true if you want to use the build type definition\nexisting on the local machine instead of downloading the definition\nfrom the server. The local path used will be the same as the location\nwhere the build type would have been downloaded.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;DoNotDownloadBuildType&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;false&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; MSBuildPath\nSet this value to the full path to the directory of MSBuild.exe to use\na location other than the default. This should only be needed if a new\nversion of the .NET Framework is installed.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;MSBuildPath&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;!&#8211; MaxProcesses\nSet this value to the maximum number of processes MSBuild.exe should\nuse for builds started by agents hosted by this executable.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;MaxProcesses&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;1&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;!&#8211; LogFilePerProject\nSet this value to true if you would like Team Build to generate errors\nand warning log files for each project, rather than just for each platform\nconfiguration combination.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;LogFilePerProject&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;false&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;!&#8211; SourcesSubdirectory\nSet this value to the desired sources subdirectory for the build agents\nhosted by this executable. \n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;SourcesSubdirectory&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;Sources&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; BinariesSubdirectory\nSet this value to the desired binaries subdirectory for the build agents\nhosted by this executable.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;BinariesSubdirectory&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;Binaries&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN> <\/PRE><PRE><SPAN>&lt;!&#8211; TestResultsSubdirectory\nSet this value to the desired test results subdirectory for the build agents\nhosted by this executable.\n&#8211;&gt;<BR><\/SPAN><SPAN>&lt;<\/SPAN><SPAN>add<\/SPAN> <SPAN>key<\/SPAN>=<SPAN>&#8220;TestResultsSubdirectory&#8221;<\/SPAN> <SPAN>value<\/SPAN>=<SPAN>&#8220;TestResults&#8221;<\/SPAN> <SPAN>\/&gt;<\/SPAN><\/PRE><PRE><SPAN>&lt;\/<\/SPAN><SPAN>appSettings<\/SPAN><SPAN>&gt;<\/SPAN>\n<SPAN>&lt;\/<\/SPAN><SPAN>configuration<\/SPAN><SPAN>&gt;<\/SPAN><\/PRE><\/BLOCKQUOTE>\n<P><STRONG>[UPDATE 9\/07\/07]<\/STRONG> I&#8217;ve added a link to the official doc for changing the port.<\/P>\n<DIV class=\"wlWriterSmartContent\" id=\"0767317B-992E-4b12-91E0-4F059A8CECA8:c92e6c9a-b1c1-4a3d-bdf2-9b1ed250b0ba\">Technorati tags: <A href=\"http:\/\/technorati.com\/tags\/tfs\" rel=\"tag\">tfs<\/A>, <A href=\"http:\/\/technorati.com\/tags\/team%20foundation\" rel=\"tag\">team foundation<\/A>, <A href=\"http:\/\/technorati.com\/tags\/tfs%202008\" rel=\"tag\">tfs 2008<\/A>, <A href=\"http:\/\/technorati.com\/tags\/orcas\" rel=\"tag\">orcas<\/A>, <A href=\"http:\/\/technorati.com\/tags\/team%20build\" rel=\"tag\">team build<\/A>, <A href=\"http:\/\/technorati.com\/tags\/build%20agent\" rel=\"tag\">build agent<\/A><\/DIV><\/p>\n","protected":false},"excerpt":{"rendered":"<p>While some of the build agent properties are available in the VS GUI, buried in the tfsbuildservice.exe.config file are a number of options that control key aspects of the build agent and the build.&nbsp; This file existed in TFS 2005, but it had fewer options.&nbsp; While you don&#8217;t have to change anything for the build [&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-2193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-team-build","tag-team-foundation"],"acf":[],"blog_post_summary":"<p>While some of the build agent properties are available in the VS GUI, buried in the tfsbuildservice.exe.config file are a number of options that control key aspects of the build agent and the build.&nbsp; This file existed in TFS 2005, but it had fewer options.&nbsp; While you don&#8217;t have to change anything for the build [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts\/2193","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=2193"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts\/2193\/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=2193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/categories?post=2193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/tags?post=2193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}