If some assembly is targeted to one of the two 64-bit
instruction-set architecture there is no a way for it to run in a 32-bit system. At the same time, a 32-bit application will work on any 64-bit Windows version via WoW64:
http://en.wikipedia.org/wiki/WOW64[
^].
You should always prefer the target "AnyCPU". Is all the assemblies used by your applications are like that, your application will work on any of the architecture. Actual code will be generated by the JIT compiler, depending on the actual platform during run-time. If only the entry-point assembly (usually, EXE) is compiled to a certain instruction-set target, it will actually define the instruction set used by the whole application.
There is no a way to mix assemblies (or any executable modules, including unmanaged ones, use by any of the assemblies) compiled to different instruction-set architectures in one process. Such application cannot work, no matter what platform you would try to use during runtime.
Those unmanaged executable modules (PE files) presents a special problem for multi-targeted software. They are usually compiled to once certain instruction-set target architecture, so it dictates the target of the assemblies using them, and those assemblies dictate the instruction-set architecture of the whole application. If you want to make a project working on different instruction-set target architectures, you should provide a way to replace those modules with the versions compiled to different target. This is the usual situation, when the installation package (like MSI) detects the actual platform and provided appropriate versions for the modules sensitive to the instruction-set architecture: unmanaged modules and assemblies directly depending on them (such as assemblies using P/Invoke or assemblies compiled as mixed-mode C++/CLI projects).
Please see also:
http://en.wikipedia.org/wiki/Instruction_set[
^],
http://en.wikipedia.org/wiki/Just-in-time_compilation[
^],
http://en.wikipedia.org/wiki/Platform_Invocation_Services[
^],
http://en.wikipedia.org/wiki/Managed_code[
^],
http://en.wikipedia.org/wiki/C%2B%2B/CLI[
^],
http://msdn.microsoft.com/en-us/library/xey702bw.aspx[
^],
http://www.ecma-international.org/publications/standards/Ecma-372.htm[
^].
—SA