Thursday, September 07, 2006 3:35 PM
when I build several Solutions (several Products/Exes whatever) in one TeamBuild all output is copied to one location: Binaries. So I got a mix of all assmblies of all solutions in the build, right? What is the rational behind that? If my solutions are branches of each other, the assemblies would also mix in version - overwrite each other?
Can you please share your experiences with this?
As I see it the only way to change this behavior would be a massive change in Microsoft.TeamFoundation.Build.targets. Or does someone have a simpler/better approach of building several solutions into seperate directories? Yes several Team Builds are an option, but if you have inter solution dependencies with late binding (Type.GetType()) or COM Servers there is a problem. An approach with more stages would be very usefull here.
I thought I have read that Enterprise Library is currently developed with TFS. Can someone over there please blog their experiences or better their Team Build scripts?
Thursday, September 07, 2006 6:19 PMModerator
The idea behind using the same OutDir for each solution in a Team Build is simply that we need the binaries to be in known locations so we can copy them to the drop location, point unit tests at them, etc. This can certainly be an issue if you have multiple assemblies with the same name within a single Team Build.
There are workarounds for this, but as you say, they involve major changes to Microsoft.TeamFoundation.Build.targets. We are aware of this issue (and other related issues with Team Build extensibility) and are doing our best to address them in future versions of Team Build. For now, the following blog post illustrates one method for making changes to the targets file to address this issue: http://blogs.msdn.com/manishagarwal/archive/2006/03/24/559693.aspx.
In general, I would recommend building everything into subdirectories (as in the referenced blog post) within the main $(BinariesRoot) directory used by Team Build - otherwise, your binaries will not get copied to the drop location, your unit tests may not be able to find your binaries, etc.