{"id":3312,"date":"2017-10-13T17:44:30","date_gmt":"2017-10-14T00:44:30","guid":{"rendered":"https:\/\/visualgdb.com\/w\/?p=3312"},"modified":"2017-10-13T17:45:23","modified_gmt":"2017-10-14T00:45:23","slug":"building-visualgdb-projects-with-tfs","status":"publish","type":"post","link":"https:\/\/visualgdb.com\/tutorials\/ci\/tfs\/","title":{"rendered":"Building VisualGDB projects with Team Foundation Server"},"content":{"rendered":"<p>This tutorial shows how to configure <a href=\"https:\/\/www.visualstudio.com\/tfs\/\">Team Foundation Server<\/a> to automatically build VisualGDB projects. In this tutorial we will use 3 machines:<\/p>\n<ul>\n<li>A developer machine with Visual Studio and VisualGDB. It will be used to create projects and orchestrate builds (<strong>client<\/strong>).<\/li>\n<li>A machine running Team Foundation Server (<strong>server<\/strong>).<\/li>\n<li>A machine running the build agent that will be doing continuous integration builds. In this tutorial we will run the build agent on the same machine that runs Team Foundation Server (<strong>server<\/strong>).<\/li>\n<\/ul>\n<p>We will begin the tutorial with installing and configuring Team Foundation Server, then show how to create a project from Visual Studio and put it under TFS and finally will demonstrate how to setup automatic builds.<\/p>\n<ol>\n<li>Install Team Foundation Server on the <strong>server:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/01-inst.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3313\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/01-inst.png\" alt=\"01-inst\" width=\"876\" height=\"613\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/01-inst.png 876w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/01-inst-300x210.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/01-inst-130x90.png 130w\" sizes=\"(max-width: 876px) 100vw, 876px\" \/><\/a>Warning! Older TFS2017 versions will not be able to detect VS2017.4 on the server when setting up the build agent. Please ensure you use TFS2017 Update 3 or later.<\/strong><\/li>\n<li>Open the TFS administration console in your browser (usually http:\/\/&lt;server name&gt;:8080\/tfs) and create a new project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/02-newprj.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3314\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/02-newprj.png\" alt=\"02-newprj\" width=\"1141\" height=\"934\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/02-newprj.png 1141w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/02-newprj-300x246.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/02-newprj-1024x838.png 1024w\" sizes=\"(max-width: 1141px) 100vw, 1141px\" \/><\/a><\/li>\n<li>Go to the development machine and open Team Explorer. Then select &#8220;Connect to Team Project&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/03-teamprj.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3315\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/03-teamprj.png\" alt=\"03-teamprj\" width=\"1337\" height=\"784\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/03-teamprj.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/03-teamprj-300x176.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/03-teamprj-1024x600.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Add your TFS server to the server list in Visual Studio:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/04-tfsdemo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3316\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/04-tfsdemo.png\" alt=\"04-tfsdemo\" width=\"639\" height=\"409\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/04-tfsdemo.png 639w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/04-tfsdemo-300x192.png 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/a><\/li>\n<li>Select your server and the project in the &#8220;Connect to Team Foundation Server&#8221; dialog and press &#8220;Connect&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/05-prj.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3317\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/05-prj.png\" alt=\"05-prj\" width=\"625\" height=\"454\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/05-prj.png 625w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/05-prj-300x218.png 300w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/li>\n<li>Specify the directory where you want to store the project on the <strong>client<\/strong> and click &#8220;Map &amp; Get&#8221;: <a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/06-map.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3318\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/06-map.png\" alt=\"06-map\" width=\"1337\" height=\"784\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/06-map.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/06-map-300x176.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/06-map-1024x600.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>The steps described in this tutorial will work with different types of VisualGDB projects, however we will demonstrate it based on the embedded project to show how to synchronize toolchains and BSPs between machines. Select File-&gt;New Project-&gt;VisualGDB-&gt;Embedded Project Wizard and check the &#8220;Add to Source Control&#8221; checkbox:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/tfs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3349\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/tfs.png\" alt=\"tfs\" width=\"941\" height=\"653\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/tfs.png 941w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/tfs-300x208.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/tfs-392x272.png 392w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/tfs-130x90.png 130w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><\/a><\/li>\n<li>On the first page of the wizard select &#8220;Create a new Project -&gt; MSBuild&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/08-msbuild.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3320\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/08-msbuild.png\" alt=\"08-msbuild\" width=\"822\" height=\"642\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/08-msbuild.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/08-msbuild-300x234.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>On the next page select the toolchain and the device you want to target:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/armdev.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3350\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/armdev.png\" alt=\"armdev\" width=\"822\" height=\"642\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/armdev.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/armdev-300x234.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>Select the project template you want to use and click &#8220;Next&#8221;: <a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/10-sample.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3322\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/10-sample.png\" alt=\"10-sample\" width=\"822\" height=\"642\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/10-sample.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/10-sample-300x234.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>Finally choose your debug method. As this tutorial focuses on build only, we select the GDB simulator, that doesn&#8217;t need any extra setup, but is impractical for most real debugging:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/11-sim.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3323\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/11-sim.png\" alt=\"11-sim\" width=\"822\" height=\"642\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/11-sim.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/11-sim-300x234.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>Press &#8220;Finish&#8221; to create the project. Visual Studio will warn you that certain files coming from the device SDK are not under source control. We will show how VisualGDB handles it later, so click &#8220;ignore all&#8221; for now:\u00a0 <a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/13-ignore.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3325\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/13-ignore.png\" alt=\"13-ignore\" width=\"1337\" height=\"784\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/13-ignore.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/13-ignore-300x176.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/13-ignore-1024x600.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Build the solution to ensure that the project is complete and all necessary components are present:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/15-build.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3327\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/15-build.png\" alt=\"15-build\" width=\"1337\" height=\"784\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/15-build.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/15-build-300x176.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/15-build-1024x600.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Go to the &#8220;Pending changes&#8221; view in Team Explorer. It will automatically list all relevant files (excluding the embedded device SDK). Click &#8220;Check In&#8221; to send the project to the TFS server:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/14-checkin.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3326\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/14-checkin.png\" alt=\"14-checkin\" width=\"1337\" height=\"784\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/14-checkin.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/14-checkin-300x176.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/14-checkin-1024x600.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Go to the machine that will be used as a build agent and open the TFS management console. Select your project, switch to the &#8220;Build&#8221; tab and click &#8220;+Agent&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/16-agent.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3328\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/16-agent.png\" alt=\"16-agent\" width=\"1202\" height=\"821\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/16-agent.png 1202w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/16-agent-300x205.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/16-agent-1024x699.png 1024w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/16-agent-130x90.png 130w\" sizes=\"(max-width: 1202px) 100vw, 1202px\" \/><\/a>Then click on the &#8220;Download&#8221; button and save the build agent archive somewhere on the <strong>server<\/strong>.<\/li>\n<li>Install Visual Studio and VisualGDB on the <strong>server<\/strong>. They are required to build MSBuild-based projects. If your projects use GNU Make, or any other build system, you can setup a manual build action instead, however this tutorial will focus on using MSBuild. Open the &#8220;About VisualGDB&#8221; window to start your trial or enter your VisualGDB key:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/18-vgdb.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3331\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/18-vgdb.png\" alt=\"18-vgdb\" width=\"1231\" height=\"840\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/18-vgdb.png 1231w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/18-vgdb-300x205.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/18-vgdb-1024x699.png 1024w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/18-vgdb-130x90.png 130w\" sizes=\"(max-width: 1231px) 100vw, 1231px\" \/><\/a><\/li>\n<li>Once the TFS agent is downloaded, unpack it, open its directory in Command Prompt and run &#8220;config&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/17-setupagent.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3330\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/17-setupagent.png\" alt=\"17-setupagent\" width=\"978\" height=\"455\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/17-setupagent.png 978w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/17-setupagent-300x140.png 300w\" sizes=\"(max-width: 978px) 100vw, 978px\" \/><\/a>Do not configure the agent to run as a service before\u00a0 you confirm that VisualGDB-based builds work. Running agent as service may interfere with various tools that VisualGDB uses and is only recommended once the build process is otherwise stable.<\/li>\n<li>Ensure that the %VISUALGDB_DIR% variable is visible in the command prompt where you run the agent and start it by running the &#8220;run&#8221; script:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/19-run.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3332\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/19-run.png\" alt=\"19-run\" width=\"979\" height=\"512\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/19-run.png 979w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/19-run-300x157.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/19-run-390x205.png 390w\" sizes=\"(max-width: 979px) 100vw, 979px\" \/><\/a><\/li>\n<li>Get back to the development machine and open the TFS console in your browser.\u00a0 Go to &#8220;Build &amp; Release -&gt; Build Definitions -&gt; +New Definition&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/20-template.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3333\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/20-template.png\" alt=\"20-template\" width=\"1337\" height=\"784\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/20-template.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/20-template-300x176.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/20-template-1024x600.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a>Then create a new definition based on the &#8220;Empty&#8221; template.<\/li>\n<li>Proceed with the default settings for the &#8220;Get sources&#8221; step:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/21-getsrc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3334\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/21-getsrc.png\" alt=\"21-getsrc\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/21-getsrc.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/21-getsrc-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/21-getsrc-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Then click &#8220;Add task&#8221;, locate &#8220;Visual Studio Build&#8221; and click &#8220;Add&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/22-buildvs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3335\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/22-buildvs.png\" alt=\"22-buildvs\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/22-buildvs.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/22-buildvs-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/22-buildvs-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Go to the task properties and set platform to &#8220;VisualGDB&#8221; and configuration to &#8220;Release&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/23-build.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3336\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/23-build.png\" alt=\"23-build\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/23-build.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/23-build-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/23-build-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Click &#8220;Save and queue&#8221; to start the build:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/24-save.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3337\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/24-save.png\" alt=\"24-save\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/24-save.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/24-save-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/24-save-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>\u00a0 TFS will automatically check out the project on the <strong>server<\/strong> and try building it. As we have not installed the ARM toolchain on that machine, the build will initially fail:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/26-buildfail.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3339\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/26-buildfail.png\" alt=\"26-buildfail\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/26-buildfail.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/26-buildfail-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/26-buildfail-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>If you are using the Custom edition of VisualGDB or higher, you can easily synchronize settings like toolchains between the <strong>client<\/strong> and server machines via Team Settings. Select Tools-&gt;VisualGDB-&gt;Manage Team Settings on the <strong>client<\/strong> machine:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/27-teamsettings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3340\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/27-teamsettings.png\" alt=\"27-teamsettings\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/27-teamsettings.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/27-teamsettings-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/27-teamsettings-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Enter a folder visible from both <strong>client<\/strong> and <strong>server<\/strong> machines as the shared settings folder:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/28-share.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3341\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/28-share.png\" alt=\"28-share\" width=\"686\" height=\"493\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/28-share.png 686w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/28-share-300x216.png 300w\" sizes=\"(max-width: 686px) 100vw, 686px\" \/><\/a><\/li>\n<li>On the <strong>server<\/strong> machine open the VisualGDB folder and run &#8220;VisualGDB \/teamsync:&lt;shared folder path&gt;&#8221; to synchronize the shared settings. As we have not shared anything yet, the synchronization will complete instantly:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/30-teamsync.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3343\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/30-teamsync.png\" alt=\"30-teamsync\" width=\"979\" height=\"512\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/30-teamsync.png 979w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/30-teamsync-300x157.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/30-teamsync-390x205.png 390w\" sizes=\"(max-width: 979px) 100vw, 979px\" \/><\/a><\/li>\n<li>On the <strong>client<\/strong> machine go to the Packages tab and share the toolchain and BSP required to build projects for your device, then click &#8220;Close&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/29-toolchain.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3342\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/29-toolchain.png\" alt=\"29-toolchain\" width=\"686\" height=\"493\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/29-toolchain.png 686w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/29-toolchain-300x216.png 300w\" sizes=\"(max-width: 686px) 100vw, 686px\" \/><\/a><\/li>\n<li>Start another build in TFS. If you are using VisualGDB 5.3R3 or later, it will automatically detect that it&#8217;s running under TFS and will apply the shared settings without showing any dialogs:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/31-gettoolchain.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3344\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/31-gettoolchain.png\" alt=\"31-gettoolchain\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/31-gettoolchain.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/31-gettoolchain-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/31-gettoolchain-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a>The toolchain will be automatically installed inside the TFS agent work folder; the BSP will be installed under %LOCALAPPDATA%.<\/li>\n<li>The initial build during which the toolchain and the BSP are installed will still fail as Visual Studio does not refresh the definitions mid-build. Start another build via the TFS console. This time it will succeed:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/32-build.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3345\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/32-build.png\" alt=\"32-build\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/32-build.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/32-build-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/32-build-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>You can configure the build to run automatically each time new source code is checked in via the Triggers page:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/33-autobuild.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3346\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/33-autobuild.png\" alt=\"33-autobuild\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/33-autobuild.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/33-autobuild-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/33-autobuild-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>\u00a0You can try this out by changing a few lines in the project, checking in the changes and then switching Team Explorer to the Builds mode:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/35-built.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3348\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/35-built.png\" alt=\"35-built\" width=\"1337\" height=\"869\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/35-built.png 1337w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/35-built-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/35-built-1024x666.png 1024w\" sizes=\"(max-width: 1337px) 100vw, 1337px\" \/><\/a><\/li>\n<li>Once you have configured the build, you can switch the build agent to run as a service. As VisualGDB settings and caches are stored separately for each user account, ensure that you configure it to run from the same user account you used to install VisualGDB:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/service.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3351\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/service.png\" alt=\"service\" width=\"979\" height=\"512\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/service.png 979w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/service-300x157.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2017\/10\/service-390x205.png 390w\" sizes=\"(max-width: 979px) 100vw, 979px\" \/><\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to configure Team Foundation Server to automatically build VisualGDB projects. In this tutorial we will use<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[149],"tags":[150],"_links":{"self":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/3312"}],"collection":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/comments?post=3312"}],"version-history":[{"count":2,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/3312\/revisions"}],"predecessor-version":[{"id":3353,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/3312\/revisions\/3353"}],"wp:attachment":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/media?parent=3312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/categories?post=3312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/tags?post=3312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}