Как 32-битный процесс может взаимодействовать с 64-битным процессом в .NET?

Windows не позволяет 32-битному процессу загрузить 64-битную DLL, поэтому я пытаюсь использовать удаленное взаимодействие, чтобы позволить 32-битному процессу взаимодействовать с 64-битным процессом.

Вот в чем проблема: хотя два приложения расположены на одном компьютере, одно - 32-разрядное, а другое - 64-разрядное, и они должны быть такими: создание 32-разрядных или 64-разрядных приложений сломало бы все, что эти приложения построены. на вершине.

Я использую класс .NET System.Runtime.Remoting.RemotingConfiguration и вызываю его метод Configure () и передаю ссылку на файл App.config, который ссылается на класс MarshalByRefObject, к которому я буду обращаться через удаленное взаимодействие.

Я заставил его работать, но только если класс Client, Host, MarshalByRefObject являются 32-битными или 64-битными. Если я их перепутаю, это не сработает: в итоге я получу исключение BadImageFormatException:

Не удалось загрузить файл или сборку «MyRemotingObject» или одна из его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.

Исключение исчезает, как только я делаю оба приложения 32-битными или 64-битными, но опять же, одно из них должно быть 32-битным, а другое - 64-битным.

Может кто-нибудь сказать мне, как включить межпроцессное взаимодействие между 32-битным .NET-приложением и .64-битным .NET-приложением?

 Tomas Voracek30 мая 2012 г., 21:30
Почему бы не сделать их все 32-битными или 64-битными? Какой смысл смешивать эти два?
 Marc Gravell♦30 мая 2012 г., 21:30
Remoting здесь не твой друг; использовать что-то попроще - может быть, базовый сервер сокетов.

Ответы на вопрос(2)

Решение Вопроса

удаленное взаимодействие .NET должно загрузить сборку в оба процесса, чтобы получить метаданные. Ваш контракт данных (для использования термина WCF) должен быть в отдельной сборке и должен быть скомпилирован как «AnyCPU», чтобы его можно было загружать в любой процесс. Вы явно настроили 32-битную или 64-битную версию.

 Roger Lipscombe30 мая 2012 г., 21:48
Ты должен принять ответ, тогда ...; -)
 John Smith30 мая 2012 г., 21:44
Вы правы! Установка хоста на 64 бит, клиента на 32 бит и контракт данных на ЛЮБОЙ ЦП решает проблему! СПАСИБО

Ваш ответ на вопрос