Naeem Sarfraz

Blogging about Enterprise Architecture, ALM, DevOps & happy times coding in .Net

Organising your TFS Build Output with GenerateProjectSpecificOutputFolder

When you set TFS to compile your project it will deliver the output of the build into a builds folder. You have three options as to how the output is organised and this is controlled by the Output location option located in your Build process parameters.

  • SingleFolder (default) – All binaries from the build are copied to the specific build folder.
  • PerProject – For each project/solution (and yes you can specify more than one project to build) you’ll find a folder matching the name of the project/solution and all of the binaries for that solution inside that folder.
  • AsConfigured – no binaries are copied therefore you’ll have to use a post build script to copy the files.

Your solution will typically contain more than one project and you might expect choosing PerProject will create a set of directories that match your projects. Not quite.

To rectify this you need to add /p:GenerateProjectSpecificOutputFolder=true to the MSBuild arguments (available in .Net 4.5). Output location should be set to SingleFolder or PerProject, I prefer the latter in case you select a second project in the same build.

Capture

For each project you’ll now see a separate folder like so: {drop number} \ {project name} \ *.dll | *.exe | *.pdb