I belong to a .NET shop using TFS. In the last year or so we've been trying to share and between our teams (some local, some in a completely different region).
Up until now, we've included shared code as project references. As the dependency on the shared code grows, we're getting into more and more problems (people modifying code that breaks other apps, updating project to new version of Visual Studio, etc.). As a result, I'm leaning toward having people reference the code as compiled binaries (dlls). The code itself will be maintained and regularly updated by an assigned team. Source code will be available as read only so that people can make changes/patches and submit it to the owning team for review and redistribution. What do you think of this plan? Is there a better way?
I feel that the downside to this plan is that I'm trading in one set of headaches for another. If I have many different versions of a library, how can I know for sure which versions are being used and which aren't? Is there a way to do this through TFS? I believe that if we know exactly what versions are being used, we can know to what extent we have to worry about backward compatibility, who to contact if we have concerns, etc.
How are some of you folks on large teams handling this?