32 and 64 bit versions of the BizTalk Adapter Pack

There are two separate installers for the AdapterPack - one for X86, and one for AMD64 (x64). A common scenario I see is - the users are on an x64 machine, and install the 64 bit version of the Adapter Pack. They then create a project in Visual Studio, and use the "Add Adapter Service Reference" tool to generate metadata from the Adapter, but to their surpise, an error message pops up - "No valid adapters are installed on this machine". What's going on?

The Adapters are WCF bindings, and register themselves under the System.ServiceModel section in Machine.config. On a 64 bit platform, there are two Machine.config files - one which 32 bit applications use, and one which 64 bit applications use. When you install the 64 bit version of the AdapterPack, the installer only modifies the 64 bit version of machine.config. However, Visual Studio 2005 runs as a 32 bit process, and hence the "Add Adapter Service Reference" wizard checks the 32 bit version of machine.config, but since it did not find the adapter information there, an error message was displayed.

Hence, to get this to work on a 64 bit machine, you need to install both, the 32 bit version of the adapters if the design time experience in Visual Studio 2005 is required, and the 64 bit version of the adapters if the application which will ultimately use the adapter (runtime) is 64 bit.

For the SAP Adapter, this means you need to have both versions of the RFC SDK Unicode Library present - the 32 bit and the 64 bit libraries. The 32 bit version needs to be present in the SysWow64 folder (e.g., C:\Windows\SysWow64), and the 64 bit version needs to be present in the System32 folder (e.g., C:\Windows\System32).

For the Siebel Adapter, this adapter is only present in the X86 installer and is not supported on 64 bit system (in native 64 bit mode or in the WOW mode). Hence, this scenario of consuming the Siebel Adapter on a 64 bit machine doesn't exist.

NOTE - as far as the Adapter SDK is concerned, only one version can be installed at a time. Hence, on a 32 bit machine, you should only install the 32 bit version of the ASDK, and on a 64 bit machine, irrespective of which version of the Adapter Pack you are installing (32 bit, or 64 bit, or both), you should only install the 64 bit version of the ASDK.