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


188

Acabo de revisar una revisión de Subversion a una nueva carpeta. Abrí la solución y obtengo esto cuando se ejecuta:

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

Este es el mismo código que había comprobado hace un tiempo. ¿Por qué ahora está haciendo esto? Ahora también veo un Debug x86 en lugar de solo Debug en la carpeta bin de ese proyecto xxx. ¿Qué es Debug x86 y por qué no tengo Debug solo como solía hacerlo en la carpeta bin?


2
¿Has intentado hacer una reconstrucción de todo? A veces que los problemas de dependencia correcciones extraño para mí ...
mezoid

Respuestas:


246

Parece que una parte del proyecto se está construyendo solo para x86, mientras que el resto se está construyendo para cualquier CPU / x64. Esto también me mordió. ¿Estás ejecutando un x64 (o uh ... IA64)?

Verifique las propiedades del proyecto y asegúrese de que todo se esté creando para "Cualquier CPU". Si está en Visual Studio, puede verificar todo yendo al menú "x86" o "Cualquier CPU" (al lado del menú "Depurar" / "Liberar") en la barra de herramientas en la parte superior de la pantalla y haciendo clic "Administrador de configuración ..."


1
También está en Project-> Properties-> Build, o Debug-> Properties-> Build. Recién actualizado VS2015, versión 14.0.25123.00 Actualización 2. Esta actualización acaba de ser lanzada el 5/10/16 (¡ayer!). Encontré el objetivo de plataforma establecido en x64, lo que causó el error anotado. El ajuste a "Cualquier CPU" lo arregló.
Michael D. O'Connor

179

Si recibe este error al ejecutar el sitio en IIS 7+ en servidores de 64 bits, es posible que tenga ensamblados de 32 bits y su grupo de aplicaciones tendrá la opción "Habilitar aplicaciones de 32 bits" en False; Establezca esto en verdadero y reinicie el sitio para que funcione.


55
@ Mayhem50 Lo mismo aquí. Depende de dónde ocurra el error. Si es a través del servidor web de Visual Studio y Cassini, Fraser tiene razón. Si ocurre en IIS7 +, la respuesta de Nicks es probablemente la solución más probable.
Carl Heinrich Hancke

Esta fue la respuesta perfecta para mí (moví un sitio de IIS6 en x86 a IIS 7 en x64)
DrStalker

Sí, esto lo hizo. Moví un sitio de IIS6 en x86 a IIS 7 en x64. Muchas gracias!
Lukas

40

Tuve este error al intentar usar el terrible Business Objects 4 para .Net SDK.

Envían cinco archivos BusinessObjects * .dll, pero todos son de 64 bits.

Para cargar mi página web, necesitaba hacer clic en Herramientas \ Opciones , luego cambiar esta configuración en VS2013:

ingrese la descripción de la imagen aquí


Esa opción no existe para mí. La única opción en esta pantalla para mí en Visual Studio 2010 es "Usar IIS Express para nuevos sitios web y proyectos basados ​​en archivos"
Drew Chapin el

Tengo esta opción en VS 2017 Professional
SKCS Kamal el

33

inetmgr luego ingrese al grupo de aplicaciones-> Configuración avanzada de su grupo-> tendrá la opción "Habilitar aplicaciones de 32 bits" establecida en verdadero; y reinicie IIS. revisar otra vez.!


En segundo lugar esto. Creé un nuevo grupo de aplicaciones para mi sitio y olvidé cambiar esta configuración.
AlbatrossCafe

1
Esto también me lo arregló. Lo único que necesitaba cambiar era cambiar la canalización a integrada, ya que esto también me dio un error después de que se aplicó la corrección anterior.
AxleWack

7

La BadImageFormatException en una aplicación que se ejecuta en IIS (que no se ejecuta desde VS, ya que Visual Studio soluciona el problema al usar la compilación para "Cualquier CPU") puede ser causada por lo siguiente:

El sitio es un servidor que es x64 y la configuración predeterminada del grupo de aplicaciones para Habilitar aplicaciones de 32 bits era falsa. y tienes ensambles de 32 bits

En el nivel de Visual Studio, la solución es:

  1. Cambie la configuración del proyecto "CPU de destino" a "ANYCPU"

7

Asegúrese de verificar su configuración para "Preferir 32 bits". En mi caso, Visual Studio 2012 tenía esta configuración marcada por defecto. Intentar usar cualquier cosa desde un archivo DLL externo falló hasta que desmarqué "Preferir 32 bits" .

ingrese la descripción de la imagen aquí


4

Definitivamente es un problema con algunos de los proyectos que se están construyendo para la compatibilidad x86 en lugar de cualquier CPU. Si tuviera que adivinar, diría que algunas de las referencias entre sus proyectos probablemente están haciendo referencia a los dll en algunas de las carpetas bin \ debug en lugar de ser referencias de proyectos.

Cuando se compila un proyecto para x86 en lugar de 'Cualquier CPU', los archivos DLL van a la carpeta bin \ x86 \ debug en lugar de bin \ debug (que probablemente es donde buscan sus referencias).

Pero, en cualquier caso, debe utilizar referencias de proyecto entre sus proyectos.


0

si durante el estudio visual con IIS express funciona y cuando se publica falló intente esto:ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.