Question

Recently I've changed our team build project file from:

<SolutionToBuild Include="$(SolutionRoot)/OurSolution.sln">

to

<SolutionToBuild Include="$(SolutionRoot)/**/*.csproj">

This was necessary because we have many projects which are not contained in the solution file, and for our purposes it is not feasible to just add the projects. We would like to be able to build them all in one go. So we found a way to recursively build all the projects.

This works fine and the build can be done with no errors. The only problem is there are no binaries copied to the drop folder! In fact, we can't find them anywhere! Building from the solution, the binaries are copied to a Binaries folder on the build agent. But nothing is there when building from the individual projects.

So my question is, where are they? Why does team build report that everything built fine, but then nothing is there to be copied. They aren't even in the normal bin/Release folder under the project directory.

Can someone help me understand? I feel it probably has something to do with information contained in the solution file which is not present in the project files, but I can't figure it out.

Was it helpful?

Solution

I think that the SolutionToBuild item is empty and nothing is getting built. You can verify by

<Message Text="SolutionToBuild: $(SolutionToBuild)" Importance="high"/>

Then look through your log for that statement.

You may want to revise your approach in any case. Better would be to create an MSBuild file yourself, i.e. BuildAll.proj. In that file just use the MSBuild task to build all the projects. Then set that file to be the SolutionToBuild. This will give you some more flexibilty when the projects are getting built. You can add steps before/after the build for those projects or all of them.

Sayed Ibrahim Hashimi

My Book: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

OTHER TIPS

Have you looked through the TFSBuild logs. If you have TFS 2008 the logs have lots of crunchy details that the TFS 2005 did not have.

Another thought is to fire up FileMon and watch for files created by the TFSBuild service.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top