Friday, December 2, 2011

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).
2.       Different modes (release vs. debug). Either #if 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.
4.       Different platform/configuration
5.       The build is running other steps (perhaps a 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.
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.
8.       Workspace mapping is incorrect – TFS not getting 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.
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)


  1. The biggest one's I find are, missing references, the worse one was TFS Build Server missing Unit Testing Assemblies or Interop DLL, there is also in the difference between global Imports and Local Imports and not to forget Windows Maximum folder/Filename length

  2. Many of my tests failed because the build server was running tests twice. I resolved this issue by changing the test assembly from **\*test*.dll to **\bin\**\*test*.dll so that the build server would only run tests from the bin folder.

    Here are some of the errors I got.
    Warning: System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain.
    Warning: Unable to load types from the test source...
    Warning: Test Run deployment issue: Failed to get the file for deployment item...

    1. Thanks a ton!!!**\bin\**\*test*.dll saved my life :)