Update - Found a solution here
I've had a problem ever since installing TFS, and I've not blogged about it yet because I wanted to figure out a good solution first. I haven't found the solution, so I'm hoping for some good advice from the brilliant GWB readers.
We have quite a few dll's and controls that we reference from our applications. For example, we have our SQL Connection String control that lives in the EnGraph Controls team project. If I want to use the SQL Connection String control, I add a reference to the control on the shared folder on the TFS server that does the team build. This works really well because when the control is updated, all of the applications that reference it are automatically updated. I also don't have to worry about different file locations when I work on different computers, the latest version is always on the server.
However, this decision is causing some problems.
First of all, executing a team build is painful. The team build wants to clean out the build folder and if I have another instance of visual studio open that references that control, it will bomb. I generally have to clean the solution that references the control and keep trying to execute the build. Eventually it will go through, it usually just a matter of trying. I really don't want to have to play the guessing game with team build though. I want to be able to execute a team build and it just works.
The second problem has to do with visual studio build time. We work remotely a lot of the time, and we connect to our network over VPN (using our handy dandy VPN Manager). When we have two or three megabytes worth of references, it takes a while to bring all those references down from the server before it can even start the build.
So basically, my problem is this. I want everybody on our team to be able to always have the latest version of our common dll's and controls, but I don't want to pay the network cost every time we build from VS, and I don't want to execute a team build four times before it goes through.