.net - System.BadImageFormatException Se intentó cargar un programa con un formato incorrecto
revit target-framework (6)
Es posiblemente una discrepancia de 32 - 64 bits.
Si está ejecutando un sistema operativo de 64 bits, Assembly RevitAPI puede compilarse como 32 bits y su proceso como 64 bits o "Cualquier CPU".
O bien, RevitAPI se compila como de 64 bits y su proceso se compila como de 32 bits o "Cualquier CPU" y se ejecuta en un sistema operativo de 32 bits.
Estoy escribiendo un complemento para otro programa que se basa en una API .NET pública. Normalmente, estos complementos se crean mediante la creación de una biblioteca de clase DLL que hace referencia al ensamblado API. A continuación, se crea una clase de comando heredando desde una clase de comando base en el conjunto de API. La aplicación se configura para hacer referencia al archivo DLL del complemento y también es responsable de activar realmente la clase de comando personalizada cuando el usuario lo solicita.
Sin embargo, ahora estoy tratando de automatizar la generación de algunos códigos a través de System.CodeDOM
, y quiero crear una aplicación de consola simple que genere automáticamente nuevos tipos de clase basados en los tipos en el ensamblaje de la API.
Sin embargo, cuando intento ejecutar mi aplicación obtengo la siguiente excepción.
System.BadImageFormatException no se ha manejado Mensaje: No se pudo cargar el archivo o ensamblado ''RevitAPI, Version = 2011.0.0.0, Culture = neutral, PublicKeyToken = null'' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.
Por lo general, necesito establecer el marco de destino de un ensamblaje de complemento en 3.5. Sin embargo, ahora descubrí que el error anterior desaparece si establezco el marco de destino de mi aplicación de consola en 2.0. Sin embargo, mi aplicación de consola ya hace referencia a otras bibliotecas de clase que tienen su marco de destino establecido en 3.5. Y preferiría no reescribirlos en el marco 2.0.
Estaba teniendo problemas con una nueva instalación de VS con un proyecto x64, para Visual Studio 2013 y Visual Studio 2015:
Tools
-> Options
-> Projects and Solutions
-> Web Projects
-> Check "Use the 64 bit version of IIS Express for web sites and projects"
Estas sugerencias son precisas, pero quería agregar una nota. Me quedé atrapado simplemente porque tenía múltiples configuraciones de publicación. Estaba editando "Depurar - Cualquier CPU" y luego implementé la configuración "Depurar - x64". Asegúrese de editar y desplegar la misma configuración. Verifique esto haciendo clic en la pestaña "Configuración" después de comenzar a publicar y aparecerá el cuadro de diálogo "Publicar web". Asegúrese de que coincida con la configuración que ha editado. (¡Son 4 horas de mi vida que nunca volveré!)
Si usa IIS, vaya al grupo de aplicaciones Seleccione el que usa su sitio y haga clic en Configuración avanzada Asegúrese de que la opción Habilitar aplicaciones de 32 bits esté configurada en Verdadero
Tuve el mismo problema al ejecutar mi software en otra máquina. En mi PC desarrollador (Windows 7), tuve instalado Visual Studio 2015, la PC de destino era una instalación limpia de Windows 10 (.Net instalado). También lo probé en otra PC limpia de Windows 7, incluido .Net Framework. Sin embargo, en las dos pc de destino, necesitaba instalar Visual C ++ Redistributable para el paquete de Visual Studio 2015 para x86 o x64 (depende de para qué se construye la aplicación). Eso ya estaba instalado en mi pc para desarrolladores.
Mi aplicación usaba una biblioteca C, que se compiló en una aplicación C ++ utilizando las opciones / clr y / TP en Visual Studio. Además, la aplicación proporcionaba funciones a C # mediante el uso de firmas de métodos dllexport. No estoy seguro de si la integración de C # dio lugar a ese error o si una aplicación C ++ me hubiera dado lo mismo.
Espero que ayude a cualquiera.
tengo el mismo problema, lo que hice acabo de descargar dll de 32 bits y lo agregué a mi carpeta bin esto se solucionó mi problema