2012-05-30 22 views
6

Windows no permite que un proceso de 32 bits cargue un dll de 64 bits, por lo que estoy tratando de usar la comunicación remota para permitir que el proceso de 32 bits interactúe con un proceso de 64 bits.¿Cómo se puede comunicar un proceso de 32 bits con un proceso de 64 bits en .NET?

Aquí está el problema: mientras las dos aplicaciones se encuentran en la misma máquina, una es de 32 bits y la otra de 64 bits, y tienen que ser así: hacer que tanto 32 bits como 64 bits rompan todas estas aplicaciones se construyen encima de.

estoy usando la clase System.Runtime.Remoting.RemotingConfiguration de .NET y llamando a su método configure() y pasando una referencia a un archivo app.config que hace referencia a la clase MarshalByRefObject que va a acceder a través de la interacción remota.

Lo tengo para trabajar, pero solo cuando el Cliente, el Anfitrión, la clase MarshalByRefObject son de 32 bits o de 64 bits. Si los mezclo, esto no funcionará: terminaré con una BadImageFormatException:

No se pudo cargar el archivo o ensamblado 'MyRemotingObject' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

La excepción desaparece tan pronto como hago ambas aplicaciones ya sea de 32 bits o de 64 bits, pero una vez más, una de ellas debe ser de 32 bits y la otra de 64 bits.

¿Alguien me puede decir cómo habilitar la comunicación entre procesos entre una aplicación .NET de 32 bits y una aplicación .NET de .64 bit?

+0

Remoting no es tu amigo aquí; use algo más simple, tal vez un servidor de socket básico. –

+0

¿Por qué no hacer que sean todos de 32 bits o de 64 bits? ¿Cuál es el punto de mezclar estos dos? –

Respuesta

8

suposición aleatoria: .NET interacción remota necesita cargar el conjunto en ambos procesos para controlar la metadatos. Su contrato de datos (para usar el término WCF) debe estar en un ensamblaje separado y debe compilarse como "AnyCPU", de modo que se pueda cargar en cualquiera de los procesos. Lo tienes configurado explícitamente en 32 bits o 64 bits.

+0

¡Tienes razón! Configurar el host a 64 bits, el cliente a 32 bits y el contrato de datos a CUALQUIER CPU resuelve el problema. ¡GRACIAS! –

+2

Deberías aceptar la respuesta, entonces ... ;-) –

Cuestiones relacionadas