Estoy llamando a funciones de una DLL no administrada de 32 bits en un sistema de 64 bits. Lo que obtengo es:
BadImageFormatException: Se ha intentado cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)
Al principio, tenía mis proyectos configurados para la plataforma Any CPU, así que los cambié ambos a x86, pero este error sigue ocurriendo. Esa es realmente la única solución que conozco para esto.
Las DLLs no están corruptas ni nada, porque puedo usarlas con otros programas (de los que no tengo la fuente). Pensé que tal vez no estaba encontrando una dependencia, pero lo he comprobado y están todas ahí. Además, ¿no lanzaría una DllNotFoundException
en ese caso?
¿Qué más puedo hacer? Y antes de que me digas "Usa una DLL no administrada de 64 bits en su lugar," déjame señalar que no hay ninguna. ;)
Si intenta ejecutar aplicaciones de 32 bits en IIS 7 (y / o máquina de 64 bits OS), obtendrá el mismo error. Así, desde el IIS 7, haga clic derecho en las aplicaciones' grupo de aplicaciones y vaya a "configuración avanzada" y cambiar "Habilitar aplicaciones de 32 bits" a "TRUE".
Reinicie su sitio web y debería funcionar.
De alguna manera, la casilla de verificación Build en el Administrador de Configuración había sido desmarcada para mi ejecutable, por lo que todavía se estaba ejecutando con la antigua construcción Any CPU. Después de arreglar eso, Visual Studio se quejó de que no podía depurar el ensamblaje, pero eso se arregló con un reinicio.
Acabo de tener este problema también. Intenté todas las sugerencias aquí, pero no ayudaron.
He encontrado otra cosa para comprobar que lo arregló para mí. En Visual Studio, haga clic derecho en el proyecto y abrir "Propiedades". Haga clic en el "Compilar" (o "Build") ficha y, a continuación, haga clic en "Opciones avanzadas de compilación" en la parte inferior.
Compruebe el desplegable "CPU de destino". Debe coincidir con la "Plataforma" que está construyendo. Es decir, si usted está construyendo "Cualquier CPU" entonces "CPU de destino" debe decir "Cualquier CPU". Revise todas sus Plataformas haciéndolas activas y revise esta configuración.