10 Reasons why the build works locally but
fails on the build server
This is a braindump:
1. Developer did not check all the files in, or
developer doesn't have the latest files (sometimes TFS hiccups getting latest
dlls files).
developer doesn't have the latest files (sometimes TFS hiccups getting latest
dlls files).
2. Different modes (release vs. debug). Either #if
DEBUG, or project is unmarked in configuration manager.
DEBUG, or project is unmarked in configuration manager.
3. Different bin structure - each project gets its own
(Default for visual studio), vs. single shared bin for all (default for TFS).
This is especially common when different versions of the same assembly is
referenced in multiple projects in the same solution.
(Default for visual studio), vs. single shared bin for all (default for TFS).
This is especially common when different versions of the same assembly is
referenced in multiple projects in the same solution.
4. Different
platform/configuration
platform/configuration
5. The build is running other steps (perhaps a
packaging or command-line unit tests)
packaging or command-line unit tests)
6. Different bitness, say developer workstation is
64-bit, but build server is 32-bit, and some extra step breaks because of
this.
64-bit, but build server is 32-bit, and some extra step breaks because of
this.
7. Rebuild-vs-build. Developer not running a rebuild.
Hence there's an error in creating a dll, but it already exists on dev machine
due to some other process, but build server fails.
Hence there's an error in creating a dll, but it already exists on dev machine
due to some other process, but build server fails.
8. Workspace mapping is incorrect – TFS not getting
all the files it needs
all the files it needs
9. Unit test code coverage – visual studio (at least
2008) can be very brittle running command line unit tests and code
coverage.
2008) can be very brittle running command line unit tests and code
coverage.
10. Treat warnings as compile errors – depending on
your process, the build server may fail on these, but Visual studio may only
flag you with a warning (which dev ignores)
your process, the build server may fail on these, but Visual studio may only
flag you with a warning (which dev ignores)