2012-07-27 14 views
8

Tengo un proyecto de sitio web de formularios web. Este sitio web hace referencia a 4 proyectos de biblioteca de clase. 3 de estas bibliotecas de clases hacen referencia a un ensamblado de terceros. Obtengo el siguiente error de compilación para cada uno de los 3 proyectos de biblioteca de clases.Sitio web: MSB3270: Hubo una falta de coincidencia entre la arquitectura del procesador

ASPNETCOMPILER: error ASPCONFIG: No se pudo cargar el archivo o ensamblado 'myAssembly' o uno de sus dependencias. Se intentó cargar un programa con un formato incorrecto. [Proyecto. metaproj]

He intentado todas las combinaciones posibles de AnyCPU/x86/x64 en los proyectos de la biblioteca de clases. No puedo cambiar esto en el proyecto del sitio web. Tengo una versión x86 y x64 de la dll de terceros. Intenté ambos.

"ClassLibrary.csproj" (objetivo por defecto) (4) -> (ResolveAssemblyReferences objetivo) -> C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1561 , 5 ): advertencia MSB3270: Hubo una falta de coincidencia entre la arquitectura del procesador el proyecto que se está construyendo "MSIL" y la arquitectura del procesador de la referencia "ThirdPartyDll, Version = xxx, Culture = neutral, processorArchitectu re = x86" , "x86". Esta falta de coincidencia puede causar fallas en el tiempo de ejecución. Considere cambiar en la arquitectura de procesador de destino de su proyecto a través de Configurati en Manager para alinear las arquitecturas de procesador entre su proyecto y referencias, o tome una dependencia en referencias con una arquitectura de procesador th en coincide con la arquitectura de procesador de destino de tu proyecto [ClassLibrary.cspro j]

El siguiente gráfico ilustra la configuración de la solución. Tenga en cuenta que no puedo cambiar desde "AnyCPU" aquí, solo desde dentro de cada proyecto de biblioteca de clase individual.

Solution configuration

Todo .NET 4

la conversión de la página web para una aplicación Web no es una opción.

Gracias,

+0

Vea la respuesta de David Sacks aquí: http://stackoverflow.com/questions/10113532/visual-studio-c-c-olution-hitting-mismatch-between-processor-architecture –

Respuesta

5

Obviamente, tiene una DLL nativa de 32 bits. Por lo tanto, el grupo de aplicaciones en IIS debe configurarse para ejecutar .NET Framework en modo de 32 bits.

Esto se puede configurar en el Administrador de IIS. Vaya a "Grupo de aplicaciones", seleccione el grupo de aplicaciones relevante y abra el cuadro de diálogo "Configuración avanzada ...". La opción de 32 bits está cerca de la parte superior.

+0

Lo mismo ocurre con una versión de 64 bits de la dll de terceros. Estableceré el grupo de aplicaciones en 32 bits una vez que estoy implementando en un servidor de desarrollo. –

+0

Entonces parece que la biblioteca de terceros tiene otras dependencias que no se pueden encontrar como la DLL de tiempo de ejecución de Microsoft. ¿Qué DLL es de todos modos? ¿Una privada o una biblioteca de código abierto? – Codo

+0

http://dtsearch.com/ –

0

uno de sus ensamblados de referencia sólo es x86 y así la cadena de proyectos que hace referencia a que se debe construir por sólo x86. Asegúrese también de que cuando implemente su grupo de aplicaciones esté configurado para 32 bits.

+0

He intentado esto. Configurando todos los proyectos a x86. Aparece el error No se pudo cargar el archivo o ensamblado 'Proyecto' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto. Con el dll x86 de terceros y todo configurado en x86. –

+0

Asegúrese de haber hecho eso para toda la Configuración de la solución. Haz una limpieza Verifique nuevamente que no tenga una versión local conflictiva o una en el GAC. Tenga en cuenta que si la biblioteca A de terceros es de 32 bits y el proyecto B la usa, entonces el proyecto C usa el proyecto B; los tres tienen que ser x86 –

+0

GAC no tiene una versión. ¿Qué quiere decir exactamente con una versión local? En la carpeta bin? ¿Y por 'toda la configuración de la solución'? Consulte la edición anterior (captura de pantalla de la opción 'AnyCPU' de la solución). –

Cuestiones relacionadas