It seems that a build system best-practice is to have a single script that can build all source and package the releases. See Joel Test #2
How do you account for non-portable dependencies? For example, if you code for .net 4, then you need .net 4 installed on the box. Standard MS release .net 4 is not xcopy deployable (unless I'm mistaken?). I can see a few avenues:
- the dependencies are clearly stated in some resource file (wiki, txt, whatever). When you call the build script, the build will fail if you don't have the dependency installed. This is an acceptable outcome.
- The build script is responsible for setting up the environment. So if you require .net 4 and its not on the box then it installs it for you.
- A flavor of #2 - instead of installing dependencies, the script spawns a pre-packaged image (virtual machine, Amazon EC2 AMI) that is setup with all dependencies
- ???