Есть несколько способов справиться с этим.Изменения кода (небольшие) требуются для первых трех подходов:
A.Вы можете изменить PATH так, чтобы он указывал на конкретную папку платформы во время запуска приложения.Затем .NET автоматически загрузит локальные библиотеки DLL из этой папки.
B.Вы можете подписаться на событие AssemblyResolve и затем выбрать сборку, основанную на платформе.
Ознакомьтесь с постом Скотта Билиаса в блоге на этом http://scottbilas.com/blog/automatically-choose-32-or-64-bit-mixed-mode-dlls/. Обратите внимание, что он предпочитает подход А.
"В двух словах, решение состоит в том, чтобы обмануть загрузчик! Ссылка на p4dn.dll, который не существует, и использование события AssemblyResolve для перехвата загрузки и перенаправления ее на сборку правильного размера."
C.Используйте специфичный для платформы набор exe.configs и элемент codebase, чтобы определить места сборки.Ваша установка установит правильную на основе платформы.
http://msdn.microsoft.com/en-us/library/4191fzwb.aspx
D.Запишите две установки, одну для 32-битной и одну для 64-битной, затем установите только соответствующие файлы для платформы.