Running a x64 build server. Challenges overcome.

We just setup a new build server on my current project and with it came some of those little hiccups which made the setup take longer than planned.

Cruise Control Team Foundation Client  issues

1. Although our continuous integration server (Cruise Control.Net) fully supports running on 64 bit not all of its dependencies do.  Team Foundation Client 2008 does not support 64 bit operating systems.  The fix was to force the .Net framework to run the cruise control service in 32 bit mode, by setting the 32 bit flag on the ccservice.exe. This was done using the corFlags.exe from the .Net SDK.  The actual command that was run is:

CorFlags.exe ccservice.exe /32BIT+

2. Running Asp.Net on wow32.

Although our application code could run 64 bit.. not all of our dependencies can.  Our web application kept failing on startup claiming that one dll could not run on x64.  Rather than tracking down a new version for that dll only to deal with the next one I first wanted to see the application work on the server running wow32 (that’s Windows On Windows 32 bit) there are the operations that need to be done in order to make this happen. The first two are enabling 32 bit in IIS and registering the 32 bit .Net framework.

cscript %SYSTEMDRIVE%inetpubadminscriptsadsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

%SYSTEMROOT%Microsoft.NETFrameworkv2.0.50727aspnet_regiis.exe -i 

The third step is enabling the (32) in the Web Extensions in IIS Manager. This option show us after you run the aspnet_regiis command.

Once I can test my application in 32 bit mode and I know it all works, now it is time to get back to 64 bit mode and track down the culprit that prevented this in the first place. 

About Eric Hexter

I am the CTO for QuarterSpot. I (co)Founded MvcContrib, Should, Solution Factory, and Pstrami open source projects. I have co-authored MVC 2 in Action, MVC3 in Action, and MVC 4 in Action. I co-founded online events like mvcConf, aspConf, and Community for MVC. I am also a Microsoft MVP in ASP.Net.
This entry was posted in Asp.Net, CC.Net, continous integration, IIS, x64. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • another issue we had when we moved to a 64 bit build server was that NCover doesn’t work on a 64 bit machine. At least not the latest free versions. The newer (non-free) versions do support 64 bit though…

  • Same issue with NCover the free version not supporting 64 bit. We had to run our tests twice, using the x86 version of NUnit console on code compiled for x86 in the second run just to be able to get code coverage. This means our builds take twice the time they normally would. Have you found any workarounds for this?

  • @Simone & Davy

    I integrated ncover today and I did the corflags trick on ncover.console.exe and nunit-console.exe I was able to get everything working nice and smoothly… except for the fact that I now know the health of our source code… Now comes the real work. Bumping up the code coverage in areas of the code base.

  • Well, you will still need to build it twice, right? Once for 32 bit and once for 64 bit.