I'm building a C# application that loads a 32-bit COM dll. The compiled application runs fine on 32-bit Windows but barfs on 64 bit Windows because it can't load the 32-bit COM. Is there a way to set a 32-bit build target in VC# 2008 Express Edition?
Alternatively, is there a way to force a .NET application compiled to the AnyCPU build target to run in 32-bit mode on 64-bit Windows?
You cannot explicitly set it to 32-bit in the UI in VS Express, but apparently (I only have the Professional version at hand) it can be done using a bit of setting up. This forum post has details on how to do it.
What you can also do is to use the CorFlags tool that comes with the .Net Framework SDK to set the compiled output to run as 32-bit. To set the 32-bit flag using CorFlags, run this from the command line:
This will set a flag in the header of your exe to signal to .Net that it should be run as 32-bit.
For posterity, here is the forum post adrian linked to: