c# badimageformatexception

c# - Se esperaba que el módulo incluyera un manifiesto de ensamblaje



badimageformatexception (5)

Compruebe si el manifiesto es un archivo xml válido. Tuve el mismo problema al hacer un comando de copia de DOS al final de la compilación, y resulta que, por alguna razón, no puedo entender que "copiar" era agregar un carácter extraño (->) al final de los archivos de manifiesto. El problema se resolvió agregando el interruptor "/ b" para forzar la copia binaria.

Tengo un proyecto en c # que usa la biblioteca c ++ y algunos dlls. Cuando lo ejecuto funciona bien.

La biblioteca es Awesomium , contiene tanto librerías de c ++ como envolturas de c #

Cuando creo una referencia a este proyecto desde mi proyecto ASP.NET MVC 4, aparece el siguiente error:

Detalles de la excepción: System.BadImageFormatException: no se pudo cargar el archivo o ensamblado ''file: /// D: / Projects / Development / ProGamers / GamingSite / bin / avcodec-52.dll'' o una de sus dependencias. Se esperaba que el módulo incluyera un manifiesto de ensamblaje.

Cosas que he intentado:

  1. Hacer frente a los dlls, pero todavía no funciona (el archivo existe).

  2. Registrarlo en el GAC pero tengo el mismo error allí.

  3. Asegúrese de usar .NET Framework 4.0 (y no el perfil del cliente)

  4. 2 archivos con el mismo nombre dll / exe causando el conflicto - No lo tengo.

  5. Cambie la plataforma de la solución a AnyCPU / Mixed Platforms.

Stack Trace:

[BadImageFormatException: Could not load file or assembly ''file:///D:/Projects/Development/ProGamers/GamingSite/bin/avcodec-52.dll'' or one of its dependencies. The module was expected to contain an assembly manifest.] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152 System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) +102 System.Reflection.Assembly.LoadFrom(String assemblyFile) +34 WebActivator.ActivationManager.Run() +190 [InvalidOperationException: The pre-application start initialization method Run on type WebActivator.ActivationManager threw an exception with the following error message: Could not load file or assembly ''file:///D:/Projects/Development/ProGamers/GamingSite/bin/avcodec-52.dll'' or one of its dependencies. The module was expected to contain an assembly manifest..] System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +550 System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +90 System.Web.Compilation.BuildManager.ExecutePreAppStart() +135 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516 [HttpException (0x80004005): The pre-application start initialization method Run on type WebActivator.ActivationManager threw an exception with the following error message: Could not load file or assembly ''file:///D:/Projects/Development/ProGamers/GamingSite/bin/avcodec-52.dll'' or one of its dependencies. The module was expected to contain an assembly manifest..] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9850940 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +456


Descubrí que estoy usando una InstallUtil diferente de mi Target .NET Framework. Estoy construyendo un .NET Framework 4.5, mientras tanto el error ocurrió si estoy usando el lanzamiento de .NET Framework 2.0. ¡Al usar el InstallUtil correcto para mi objetivo .NET Framework, resolví este problema!


Encontré otra razón extraña y pensé que tal vez otro desarrollador confundido como yo. Funcioné install.bat que creó para instalar mi servicio en Developer Command Prompt de VS2010 pero mi servicio se generó en VS2012. Iba a este error y me volvía loco, pero probé las herramientas del símbolo del sistema de desarrollador de VS2012 y todo salió bien. No entiendo por qué, pero mi problema fue resuelto. para que pueda probarlo y si alguien sabe por qué, por favor comparta con nosotros. Gracias.


Primero intente abrir el archivo con un descompilador como ILSpy, su dll podría estar dañado. Tuve este error en un sitio web en línea, cuando descargué el dll e intenté abrirlo, estaba dañado, probablemente se produjo algún error al cargarlo a través de ftp.


BadImageFormatException , en mi experiencia, casi siempre tiene que ver con los ensamblados compilados x86 frente a x64. Parece que su ensamblaje en C ++ está compilado para x86 y se está ejecutando en un proceso x64. ¿Es eso correcto?

En lugar de utilizar AnyCPU/Mixed como plataforma. Intenta configurarlo manualmente en x86 y ver si se ejecutará después de eso.

Espero que esto ayude.