No se pudo cargar el archivo o el ensamblado... Se intentó cargar un programa con un formato incorrecto (System.BadImageFormatException)

Resuelto BlueRaja - Danny Pflughoeft asked hace 12 años • 34 respuestas

Tengo dos proyectos ProjectAy ProjectB. ProjectBes una aplicación de consola, que depende de ProjectA. Ayer todo estaba funcionando bien, pero de repente hoy, cuando ejecuto, ProjectBaparece esto:

BadImageFormatException no se controló :
no se pudo cargar el archivo o ensamblado 'ProjectA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

Ambos son simplemente proyectos normales, sin dependencias de ningún otro proyecto que no sea .Net. Ambos son completamente .Net: no hay código nativo ni P/Invoke. Tengo otros proyectos de los que dependo ProjectAy todavía funcionan bien.

Cosas que he probado:

  • Asegúrese de que ambos proyectos estén configurados en "Cualquier CPU", con la casilla de verificación marcada. Ellos son.
  • Asegúrese de que ambos proyectos sean para el mismo Target Framework (.Net 4.0 Client Profile) .
  • En ProyectoB --> Referencias --> ProyectoA --> Propiedades, asegúrese de que "Copiar local" esté configurado en "Verdadero" _ (verifiqué que ProjectA.dll se está copiando correctamente)
  • Limpiar/reconstruir la solución. Incluso intenté eliminar manualmente las carpetas /bin y /obj en ambos proyectos.
  • Reinicie Visual Studio. Reinicie mi computadora.
  • Consulte una copia completamente nueva del repositorio.

Pero sigo recibiendo el mismo error. No tengo idea de qué hice para causar esto ni cómo solucionarlo. ¿Algunas ideas?

Aceptado

Estoy bastante seguro de que tienes un conflicto de 32 bits/64 bits. Parece que su proyecto principal podría estar configurado en 32 bits, mientras que la clase a la que hace referencia está configurada en 64 bits. Intente mirar esta pregunta SO y esta también . Entre los dos, deberías poder resolver tu problema.

La APLICACIÓN está configurada para ejecutarse en 64 bits, pero la DLL se ejecuta en 32 bits para mitigar esto, navegue a IIS >> Grupo de aplicaciones >> Configuración avanzada >> Habilite aplicaciones de 32 bits y luego configúrelas en verdadero.

Icemanind avatar Jul 07 '2012 01:07 Icemanind

Es posible que tenga problemas con su sitio web después de implementarlo en el servidor.

Luego debe ajustar su grupo de aplicaciones para Habilitar aplicaciones de 32 bits .

Pasos

  1. Abrir el Administrador de IIS
  2. Haga clic en Grupos de aplicaciones
  3. Seleccione cualquier grupo de aplicaciones que esté utilizando
  4. Desde el panel derecho, haga clic en Configuración avanzada...

  5. Establezca Habilitar aplicaciones de 32 bits en Verdadero

    Ajustes avanzados Habilitar 32 bits

Ali Adravi avatar Dec 11 '2013 17:12 Ali Adravi

Acabo de recibir este mensaje de error al ejecutar IIS Express en Visual Studio 2015. En mi caso, necesitaba ejecutar la versión de 64 bits de IIS Express:

Herramientas → Opciones → Proyectos y soluciones → Proyectos web
Marque la casilla que dice "Usar la versión de 64 bits de IIS Express para sitios web y proyectos".

Captura de pantalla:

Captura de pantalla de las opciones de VS para Proyecto Web.

TTT avatar Jun 06 '2016 20:06 TTT

Yo tuve el mísmo problema. Había configurado el "Destino de plataforma" del Proyecto A ("Proyecto A" (clic derecho)->Propiedades->Construir->"Destino de plataforma") en x86, pero mantuve el Proyecto B en "Cualquier CPU". Configurar el Proyecto B en "x86" solucionó este problema.

 avatar Apr 18 '2013 16:04