NServiceBus 32-bit (x86) Host Process

Component: NServiceBus Host

NServiceBus is an "Any CPU" framework. It doesn't have 32-bit or 64-bit specific code. This enables transitioning between 32- and 64-bit operating systems. Unfortunately, not all assemblies can be compiled using the default Any CPU architecture. In many, if not most cases, this is related to legacy systems that have 32-bit specific code for platform interoperability with native C libraries, etc.

With the default NServiceBus.Host, the application always loads in 64-bit (x64) mode if running it on a 64-bit OS, or in 32-bit (x86) mode for a 32-bit OS. Again, this is typically not a problem.

If assemblies or other libraries containing 32-bit code must be invoked and loaded into a 64-bit process a BadImageFormatException will be thrown.

There are two specific versions of the NServiceBus Host: the default Any CPU version and NServiceBus.Host32.exetargeting 32-bit.

The second one allows users running a 64-bit OS to run a 32-bit NServiceBus host process, allowing execution of 32-bit binaries/code without resorting to workarounds such as corflags.exe to patch an assembly, which instruct the .NET Framework to run in 32-bit mode.

Links to the NuGet packages:

Last modified