In the spirit of helping the next guy, here's some explanation for a problem that
was surprising to me.
We have recently upgraded our product to 64-bits and all developer workstations
to Windows 2008 x64. The transition was easy and most things worked with minor or no
tweak at all. We're still battling a TFS issue
but that will be the subject for another day, once we figure it out.
I noticed that a bunch of my unit test cases were failing when I ran them
using Resharper's test runner. I traced the
problem down to missing registry values that were needed by the tests. The
intriguing part was that I could see the registry settings there (see image below)
and the tests were working fine using NUnit's GUI runner.
After a little poking around, I saw this in Process Explorer:
Hmmm. Visual Studio and Resharper run as 32-bit processes and NUnit's (and my application itself) as 64-bit ones.
Could there be a difference between Registry access for 32-bit vs. 64-bit processes?
Yessir. It turns out that my settings were in the right place
but Windows was redirecting the 32-bit Registry accesses to the path shown below, which is obviously empty.
I don't know of any elegant work-around for this issue but for now I'm simply duplicating the
values in both places for the sake of testing. I'm not happy with this duplication but it's got me
back on track until someone bright chimes in with a better alternative.
07-20-2009 7:47 PM