We've all heard it - "try a clean build and see if it works". Oftentimes weird run-time errors will disappear after a rebuild. This has made me think - properly tracking dependencies is the job of a build system.
Are such runtime errors by definition bugs in a build system - whether it is make, or msbuild, or whichever. Or put another way, if a clean build and a normal build yield different results, is that by definition a bug in the build system?
Edit: I am assuming the build environment is sane - meaning that when files are updated, their "last modified" timestamp becomes newer (instead of an older timestamp or the same). In fact, all version control systems that I know of follow that rule because otherwise they would break build systems like Make that rely on the timestamps to track which files need to be updated.