2010-11-04 18 views
5

Tenemos una gran solución que comprende muchas bibliotecas diferentes. Acabamos de migrar al desarrollo en un sistema de 64 bits y esto nos ha llevado a pensar qué objetivo de la plataforma deberíamos especificar para cada proyecto individual en la solución.C# Solution, ¿pueden todos los proyectos apuntar a AnyCPU, excepto uno que debe ser x86?

En este momento, solo tenemos un proyecto de biblioteca que hace referencia a un archivo DLL de 32 bits. Hacemos referencia a una interoperabilidad de este archivo DLL. Sin embargo, recibimos un error al apuntar a x86 como plataforma para este proyecto, mientras que dejamos los proyectos restantes en la solución como "Cualquier CPU".

Mi pregunta es, ¿podemos apuntar a cualquier CPU en todos nuestros proyectos a excepción de la que hace referencia a la interoperabilidad de 32 bits? O debería ser solo construir todo para x86 ya que parece funcionar sin ningún error.

Respuesta

3

Sí.

Todas las DLL, pero una puede ser AnyCPU.

Simplemente asegúrese de hacer el proceso x86, y todas las DLL se cargarán como 32 bits.

¿Cuál es el error que está obteniendo? Agregar el mensaje de error probablemente daría como resultado más respuestas útiles.

+0

estamos desarrollando en una máquina de 64 bits. cuando nos dirigimos a "Cualquier CPU" para todos los proyectos a excepción de la biblioteca que requiere referencia de la DLL de 32 bits, no funciona. Recibimos un mensaje de error "Error al recuperar la fábrica de clase COM para el componente con CLSID {números} – Horges

+0

Ah, sí, entonces no funcionará. Debería funcionar si solo cambia el proyecto EXE a x86. – codekaizen

+0

Sí, eso funciona Establecemos SOLAMENTE la aplicación principal a X86 y el resto puede permanecer como AnyCPU. Cuando (y si podemos) obtenemos una nueva DLL que admite 64 bits, todo lo que necesitaremos hacer es cambiar la plataforma de destino para la aplicación principal. Gracias codekaizen – Horges

1

Creo que si todos sus dll son anyCpu, su .exe puede ser x64 o x86. Pero, si su exe es x64 o x86, sus .dlls no pueden ser el otro. Además, si su .exe es AnyCPU, creo que se cargará en cualquier modo que sea nativo de la máquina. Lo que significa que su dll tiene ya sea anyCpu o el modo nativo para su sistema.

Cuestiones relacionadas