Este dilema se puede tratar de diferentes maneras, sin embargo te dejamos la que para nosotros es la respuesta más completa.
Solución:
Algunos detalles más para completar en caso de que ayude a alguien …
Tenga en cuenta que la razón más común para esta excepción en estos días es intentar cargar un archivo específico de 32 bits (/platform:x86
) DLL en un proceso de 64 bits o viceversa (es decir, cargue un archivo específico de 64 bits (/platform:x64
) DLL en un proceso de 32 bits). Si tu platform
es inespecífico (/platform:AnyCpu
), esto no surgirá (suponiendo que ninguna dependencia a la que se haga referencia tenga el valor de bits incorrecto).
En otras palabras, ejecutando:
%windir%Microsoft.NETFrameworkv2.0.50727installutil.exe
o:
%windir%Microsoft.NETFramework64v2.0.50727installutil.exe
no funcionará (sustituir en otras versiones de framework: v1.1.4322
(solo 32 bits, por lo que este problema no surge) y v4.0.30319
como se desea en lo anterior).
Obviamente, como se explica en la otra respuesta, también se necesitará el número de versión de .NET del installutil
está ejecutando para ser >= (preferiblemente =) el del archivo EXE/DLL del que está ejecutando el instalador.
Por último, tenga en cuenta que en Visual Studio 2010, las herramientas generarán de forma predeterminada archivos binarios x86 (en lugar de Cualquier CPU como anteriormente).
Detalles completos de System.BadImageFormatException (¡decir que la única causa es que la mordida no coincide es realmente una simplificación excesiva!).
Otra razón para un BadImageFormatException
bajo un x64 instalador es que en Visual Studio 2010, el valor predeterminado .vdproj
Instalar el tipo de proyecto genera un 32-bit InstallUtilLib
calce, incluso en un sistema x64 (Busque “Las acciones personalizadas administradas de 64 bits generan una excepción System.BadImageFormatException” en la página).
Asegúrese de que el Framework más nuevo (con el que compiló su aplicación) esté primero en la RUTA. Eso resolvió el problema para mí. (Encontrado en un foro)
los key es establecer la configuración del procesador de coincidencias para el proyecto que se encuentra en dos lugares.
Y también asegúrese de que la configuración de la arquitectura sea la misma en el menú Prueba >> Configuración de prueba >> Arquitectura de procesador predeterminada >> como se muestra a continuación.
Esto es para VS2013, pero tal vez también para otras versiones.
Actualización – Para VS2019: