I'm in the middle of transitioning a build farm from Visual Studio 2005 to Visual Studio 2010. A part of this move involves combining our test bed of 4 machines with our production farm of 10 machines. On our production farm, we have our builds occur on a secondary drive, E:, so maintenance is a matter of a simple drive format. Our test bed machines, unfortunately, only have 1 hard drive and they're all C: drives, so we figured the best solution to merge the farms together is to create virtual drives on the 4 test bed machines that could simply fake being E: drives (done by using the native Windows command "subst.") This way we can have a single VS2010 template (pushing builds to the E: virtual drive) and simply bring VS2010 builds to our production farm by swapping templates. Unfortunately, our builds fail instantly upon trying anything on the virtual E: drive.
[09:24:07]: Checking for changes
[09:24:14]: RunBuildException when running build stage CreateCheckoutDirectoryStage: Failed to create build checkout directory at E:\W-3p-curl
[09:24:14]: Build finished
So why can't TeamCity deal with making a directory on the virtual E: drive despite the fact cygwin and cmd both deal with it fine?
Also, one of the things I wanted to do was have the virtual drive get created whenever the BuildAgent process starts up. I went into the BuildAgent/bin folder and tried editing both the agent.bat file and the service.start.bat files to include the subst lines (one to delete current virtual drive if it exists and another to recreate it) only to discover through an hour of testing that teamcity doesn't even use these files. Which begs the question, why do these files exist? They work if I run them manually but they are obviously not what Windows ends up using when it starts and stops the TeamCity service.