Pertanyaan Modul ini diharapkan mengandung manifes perakitan


Saya punya proyek di c # yang menggunakan c ++ library dan beberapa dll. Ketika saya menjalankannya, itu berfungsi dengan baik.

Perpustakaan itu Awesomium, berisi c ++ library dan c # wrappers

Ketika saya membuat referensi ke proyek ini dari proyek ASP.NET MVC 4 saya mendapatkan kesalahan berikut:

Detail Pengecualian: System.BadImageFormatException: Tidak dapat memuat file atau perakitan 'file: /// D: \ Projects \ Development \ ProGamers \ GamingSite \ bin \ avcodec-52.dll' atau salah satu dependensinya. Modul ini diharapkan mengandung manifes perakitan.

Hal-hal yang saya coba:

  1. Mengatasi dll, tetapi masih tidak berfungsi (File ada).

  2. Mendaftarkannya di GAC tapi saya punya kesalahan yang sama di sana.

  3. Pastikan menggunakan .NET Framework 4.0 (dan bukan profil klien)

  4. 2 file dengan nama dll / exe yang sama menyebabkan konflik - Saya tidak memilikinya.

  5. Ubah platform solusi ke AnyCPU / Platform Campuran.

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

32
2017-09-01 09:43


asal


Jawaban:


Saya menemukan bahwa, saya menggunakan InstallUtil yang berbeda dari target saya .NET Framework. Saya sedang membangun .NET Framework 4.5, sementara itu kesalahan terjadi jika saya menggunakan rilis .NET Framework 2.0. Setelah menggunakan InstallUtil yang tepat untuk target saya .NET Framework, selesaikan masalah ini!


35
2018-01-22 10:46



BadImageFormatException, dalam pengalaman saya, hampir selalu berkaitan dengan x86 versus kumpulan kompilasi x64. Kedengarannya seperti perakitan C ++ Anda dikompilasi untuk x86 dan Anda menjalankan proses x64. Apakah itu benar?

Alih-alih menggunakan AnyCPU/Mixed sebagai platform. Cobalah mengaturnya secara manual x86 dan lihat apakah itu akan berjalan setelah itu.

Semoga ini membantu.


8
2017-09-01 10:49



Saya menemukan alasan lain yang aneh dan saya pikir mungkin pengembang lain bingung seperti saya. Saya menjalankan install.bat yang dibuat untuk menginstal layanan saya di pengembang Command Prompt of VS2010 tetapi layanan saya dihasilkan di VS2012. itu akan kesalahan ini dan membuat saya gila tapi saya mencoba Prompt Perintah Pengembang VS2012 alat dan semuanya menjadi baik-baik saja. Saya tidak tahu mengapa tetapi masalah saya terpecahkan. jadi Anda bisa mengujinya dan jika ada yang tahu alasannya, silakan berbagi dengan kami. Terima kasih.


1
2018-03-26 18:14



Periksa apakah manifes adalah file xml yang valid. Saya memiliki masalah yang sama dengan melakukan perintah copy DOS pada akhir build, dan ternyata untuk beberapa alasan saya tidak bisa mengerti "copy" adalah menambahkan karakter aneh (->) di akhir file manifes. Masalahnya diselesaikan dengan menambahkan "/ b" switch untuk memaksa salinan biner.


1
2017-08-25 09:41



Pertama coba buka file dengan decompiler seperti ILSpy, dll Anda mungkin rusak. Saya mengalami kesalahan ini di situs web online, ketika saya mengunduh dll dan mencoba membukanya, itu rusak, mungkin beberapa kesalahan terjadi saat mengunggahnya melalui ftp.


1
2017-07-02 00:56