Vista 64 compatibility

Developer
May 27, 2008 at 3:22 PM
There is a problem when running booc.exe via the visual studio msbuild engine on vista 64. The problem is that visual studio/msbuild runs in 32bit and that booc.exe is marked "AnyCPU" and will therefore try to load 64 bit assemblies into a 32bit process.

This is a recognised problem with SharpDevelop and boo on vista 64. (discussed here: http://groups.google.com/group/boolang/browse_thread/thread/a5203bd6374be191)

The first suggested solution is to use corflags to change the booc.exe to 32bit only, this would solve the problem but since booc.exe is signed you will get another error. The only way I solved this was to recompile booc with platform="32bit"  (set in nant build file). This solved the issue. 

This might not be a priority issue right now, but I think should be addressed at some point. I am not sure how many developers are using vista 64, but to me the only appeal of vista was a stable 64 bit OS (so you can use 4+GB ram). What would the best way to solve this be? Here are some options:

  1. Have a separate release for vista64
  2. Bundle the normal release with a 32bit only (specifically built) booc.exe that the installation process will use if the OS is 64 bit.
Any thoughts?


Coordinator
May 27, 2008 at 7:26 PM
I don't think you're alone in 64bit world. Several of the developers at my place use it, and I've noticed a trend in some of the uber-developers towards using Windows Server 2008 as a developer machine. I think this does need to be addressed, but I imagine not for the next release.

I'm not keen on option 1, maintaining two builds rather than one will be a pain (even if only a bit).

Will option 2 limit us in any way? Can the 32bit booc still create 64 bit and AnyCPU assemblies? If it can, then I don't see a problem with us distributing a 32bit only version of booc.
Developer
May 27, 2008 at 7:34 PM
I don't see any reason that a 32bit booc.exe could not create 64bit or AnyCPU assemblies.

I agree that the best and easiest solution is probably to have a single release with a 32bit only booc.exe that works with both 32bit / 64bit windows. You just have to add the platform="32bit" to the booc compile part in the boo build file.
Coordinator
May 27, 2008 at 7:53 PM
I think that's the best option, obviously if a better method crops up later we can adjust to it, but in the meantime I think this is the way to go.
May 27, 2008 at 9:10 PM
Another way you can solve this without recompiling is via the CorFlags utility that ships with Net SDK
CorFlags booc.exe /32BIT+

that registers it as a 32bit assembly on the local machine, I use this alot on Server 2008 x64
Developer
May 28, 2008 at 6:30 AM
There is a problem using corflags when the assembly is signed, you just get another error after using corflags.