Estoy intentando instalar un servicio de Windows usando InstallUtil.exe y aparece el mensaje de error
System.BadImageFormatException: no se pudo cargar el archivo o ensamblado '
{xxx.exe}
' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.
¿Lo que da?
EDITAR: (No por OP) Mensaje completo extraído de dup obteniendo muchas más visitas [para la capacidad de Google]:
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C: \ xxx.exe Utilidad de instalación de Microsoft (R) .NET Framework Versión 4.0.30319.1 Copyright (c) Microsoft Corporation. Todos los derechos reservados.
Se produjo una excepción al inicializar la instalación: System.BadImageFormatException: No se pudo cargar el archivo o ensamblado 'file: /// C: \ xxx.exe' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.
Asegúrese de que el Framework más reciente (el que compiló su aplicación) sea el primero en la RUTA. Eso me resolvió el problema. (Encontrado en un foro )
fuente
Creo que está utilizando la versión de 64 bits de la herramienta para instalar una aplicación de 32 bits. También me enfrenté a este problema hoy y utilicé esta ruta de Framework para atender.
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
y debería instalar su aplicación de 32 bits sin problemas.
fuente
La clave es establecer la configuración del procesador de coincidencia 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 quizás lo mismo para otras versiones también.
Actualización - Para VS2019:
fuente
OK, este es el problema que tuve y, lo que lo solucionó, parece muy relevante para lo anterior.
Estoy usando Visual Studio 2010 Express. Escribí un servicio de prueba que realmente no hizo nada. Fue solo práctica para lo real más tarde.
Escribí el servicio e intenté instalarlo usando
installutil.exe
y obtuve el siguiente error:Hasta aquí lo mismo que el autor original.
La observación de Ruben anterior sobre la salida de 32 bits de Visual Studio 2010 fue la salvadora aquí.
Usé la versión de 64 bits del
installutil.exe
y, efectivamente, el resultado de la compilación de Visual Studio 2010 fue de 32 bits. Solo para agregar un poco de valor adicional aquí, puede encontrar la versión de 32 bits del último marco .NET y el asociadoinstallutil.exe
en la carpeta C: \ Windows \ Microsoft.NET \ framework . Usando esta versión delinstallutil.exe
solucionado mi problema; el servicio instalado sin problemas!Espero que esto ayude a alguien más.
fuente
Después de probar todas las soluciones mencionadas, encontré el
PlatformTarget
agregado de alguna manera a laAnyCPU
configuración en mi proyecto .csproj.Eliminar la línea funcionó para mí.
fuente
Processor Architecture for AnyCPU Projects
), todo vuelve a funcionar.Tuve este problema con un proyecto WinForms usando VS 2015. Mi solución fue:
fuente
Tuve el mismo problema. Utilizo el comando estándar para la ejecución. Estaba llamando al X64 ro ejecutar contra las pruebas de X86. Necesitaba especificar el X86 y no la versión X64 del nunit-runner.
fuente
En resumen, tanto Build como Project \ Build \ Platform deben configurarse en x64 para poder instalar con éxito el servicio de 64 bits en un sistema de 64 bits.
fuente
Mi problema fue diferente. Esto ocurrió después de un apagado inesperado de mi máquina con Windows 7. Realicé una solución limpia y funcionó como se esperaba.
fuente
En el caso de tener este mensaje en pruebas en vivo , pero no en pruebas unitarias , es porque los ensamblajes seleccionados se copian sobre la marcha en
$(SolutionDir)\.vs\$(SolutionName)\lut\0\0\x64\Debug\
. Pero en algún momento no se pueden seleccionar algunos ensamblados , por ejemplo, dlls de VC ++ en el caso de proyectos de interoperabilidad c ++ / c #.La compilación posterior
xcopy
no corregirá el problema, porque el motor de prueba en vivo borrará el archivo copiado.La única solución alternativa hasta la fecha (28 de diciembre de 2018) es evitar las pruebas en vivo y hacer todo en pruebas unitarias con el atributo
[TestCategory("SkipWhenLiveUnitTesting")]
aplicado a la clase de prueba o al método de prueba.Este error se ve en cualquier Visual Studio 2017 hasta 15.9.4 y debe ser abordado por el equipo de Visual Studio.
fuente
Compilación de destino Servidor de destino x64 Alojamiento IIS de 64 bits
Haga clic con el botón derecho en el alojamiento de appPool que ejecuta el sitio web / aplicación web y configure la habilitación de la aplicación de 32 bits = false.
fuente
Hoy me he enfrentado a este problema. En mi caso, el destino de la plataforma de mi aplicación (tenía una referencia a un dll de 64 bits) estaba configurado en,
AnyCPU
pero laPrefer 32-bit
casilla de verificación en la sección de destino de la plataforma estaba marcada de forma predeterminada. Este era el problema y funcionó bien después de desmarcar laPrefer 32-bit
opción.fuente
Encontramos una solución diferente a un problema con el mismo síntoma:
Vimos este error cuando actualizamos el proyecto de .net 4.7.1 a 4.7.2.
El problema era que a pesar de que ya no hacíamos referencia a System.Net.Http en el proyecto, estaba incluido en la sección Dedependiente de ensamblado de nuestro web.config. La eliminación de esta y cualquier otra referencia de ensamblado no utilizada del web.config resolvió el problema.
fuente
El problema es que todos,
System.BadImageFormatException: Could not load file or assembly
incluidos los que no están asociadosinstallutil.exe
en absoluto, apuntan a este mismo hilo.Si su problema está relacionado con
WindowsBase
oPresentationFramework
dlls y tiene analizadores instalados, asegúrese de tenerlos instalados para todos los proyectos de su solución o para ninguno de ellos.Haga referencia a todo el marco en el
.csproj
archivo de su biblioteca en lugar de solo a los dosdlls
:Eliminar
bin
yobj
dirs, limpiar la solución y reconstruir.fuente