One of the nice things about MSBuild is that with Visual Studio 2005, the project and solution files are the build files. So, in theory, MSBUILD will start at the sln file and walk all references during a build process.
But, what happens when you have an automated build process, or are doing continous integration and want to standardize project references to assemblies and other vendor components? Trying to get an entire development on board to use specific paths, etc is an option, but since no one is perfect (and enforcing these rules can be a nightmare), we need a better way to standardize the management of how dependancies are accessed.
With a build process in place, the build can facilitate this standardization. Assemblies, both internal and from external vendors can be catalogued on a file share and the build process itself can reference this shared location in a standardized manner, without trying to micro-manage development environment settings.
The solution is to use the ReferencePath property at the MSBUIILD command line.
MSBUILD.EXE <solution name> /p:"ReferencePath=<Path1;Path2;Path3>"
The ReferencePath property allows you to add a series of paths that MSBUILD will check, overriding any project-based references.
This is extremely helpful when references are all over the place or when it is undesirable to recreate development-time configuration at build time.