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