Saya telah menginstal ELMAH 1.1. Net 3.5 x64 di proyek ASP.NET saya dan sekarang saya mendapatkan kesalahan ini (setiap kali saya mencoba melihat halaman apa pun):
Tidak dapat memuat file atau rakitan 'System.Data.SQLite, Versi = 1.0.61.0, Culture = netral, PublicKeyToken = db937bc2d44ff139' atau salah satu dari dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah.
Deskripsi: Pengecualian yang tidak ditangani terjadi selama eksekusi permintaan web saat ini. Harap tinjau jejak tumpukan untuk informasi lebih lanjut tentang kesalahan dan dari mana asalnya dalam kode.
Detail Pengecualian: System.BadImageFormatException: Tidak dapat memuat file atau assembly 'System.Data.SQLite, Versi = 1.0.61.0, Budaya = netral, PublicKeyToken = db937bc2d44ff139' atau salah satu dari dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah.
Lebih banyak detail kesalahan di bagian bawah.
Platform Solusi Aktif Saya adalah "Any CPU" dan saya menjalankan pada x64 Windows 7 pada x64, tentu saja, prosesor. Alasan mengapa kami menggunakan versi ELMAH ini adalah karena 1.0. Net 3.5 (x86, yang merupakan satu-satunya platform yang dikompilasi) memberikan kesalahan yang sama pada server Windows x64 kami.
Saya sudah mencoba mengkompilasi untuk x86 dan x64 dan saya mendapatkan kesalahan yang sama. Saya sudah mencoba menghapus semua keluaran kompiler (bin dan obj). Akhirnya saya membuat referensi ke SQLite dll secara langsung, sesuatu yang tidak diperlukan untuk proyek untuk bekerja di server dan saya punya kesalahan kompiler ini:
Kesalahan 1 Peringatan sebagai Kesalahan: Pembuatan perakitan - perakitan yang direferensikan 'System.Data.SQLite.dll' menargetkan prosesor MyProject yang berbeda
Ada ide apa masalahnya?
Lebih detail kesalahan:
Kesalahan Sumber:
Pengecualian yang tidak tertangani dihasilkan selama eksekusi permintaan web saat ini. Informasi mengenai asal dan lokasi pengecualian dapat diidentifikasi menggunakan jejak tumpukan pengecualian di bawah ini.
Jejak Tumpukan:
[BadImageFormatException: Tidak dapat memuat file atau rakitan 'System.Data.SQLite, Versi = 1.0.61.0, Budaya = netral, PublicKeyToken = db937bc2d44ff139' atau salah satu dari dependensinya. Suatu upaya dilakukan untuk memuat suatu program dengan format yang salah.]
System.Refleksi.Assembly._nLoad (AssemblyName fileName, String codeBase, Bukti perakitan Keamanan, Lokasi perakitanHint, StackCrawlMark & stackMark, Boolean throwOnFileNotFound, Boolean forIntection) +0
System.Refl. .nLoad (Nama file AssemblyName, Kode stringBase, perakitan BuktiKeamanan, lokasi perakitanHint, StackCrawlMark & stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +43
System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark & stackMark, Boolean forIntectionection) +127 System.Reflection.Assembly.InternalLoad (rakitan StringString, perakitan EvidenceSecurity, Stack &tumpukansemua gambar.Penempatan. Load (String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +46[ConfigurationErrorsException: Tidak dapat memuat file atau assembly 'System.Data.SQLite, Versi = 1.0.61.0, Culture = netral, PublicKeyToken = db937bc2d44ff139' atau salah satu dari dependensinya. Suatu upaya dilakukan untuk memuat suatu program dengan format yang salah.]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, star BooleanDirective) +613 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDonfiguration.203 .CompilationSection.LoadAssembly (AssemblyInfo ai) +105
System.Web.Compilation.BuildManager.Get direferensikanAssemblies (CompilationSection compConfig) +178
System.Web.Compilation.BuildProvidersCompiler..ctor (VirtualPath configPemuatan
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult (Boolean isPrecompiledApp) +232
System.Web.Compilation.BuildManager.CompileGlobalAsax () +52 System.Web.Compilation.BuildManager.Engkat Tingkat Tingkat[HttpException (0x80004005): Tidak dapat memuat file atau assembly 'System.Data.SQLite, Versi = 1.0.61.0, Budaya = netral, PublicKeyToken = db937bc2d44ff139' atau salah satu dari dependensinya. Suatu upaya dilakukan untuk memuat program dengan format yang salah.]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException () +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled () +512 System.Web.Hosting.HostingEnvironmentize ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +729[HttpException (0x80004005): Tidak dapat memuat file atau assembly 'System.Data.SQLite, Versi = 1.0.61.0, Budaya = netral, PublicKeyToken = db937bc2d44ff139' atau salah satu dari dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah.]
System.Web.HttpRuntime.FirstRequestInit (konteks HttpContext) +8896783
System.Web.HttpRuntime.EnsureFirstRequestInit (konteks HttpContext) +85
System.Web.HttpRquestRequest ) +259
Jawaban:
System.Data.SQLite.dll
adalah rakitan campuran, yaitu berisi kode terkelola dan kode asli. Oleh karena itu tertentuSystem.Data.SQLite.dll
adalah x86 atau x64, tetapi tidak pernah keduanya.Pembaruan ( milik J. Pablo Fernandez ): Cassini, server web pengembangan yang digunakan oleh Visual Studio ketika Anda menekan F5 atau mengklik tombol «play» hijau, hanya x86 yang berarti bahwa bahkan jika workstation Anda x64, Anda hanya akan dapat menggunakan versi x86 dari System.Data.SQLite.dll.
Alternatif lain adalah tidak menggunakan Cassini tetapi IIS7 yang benar x64.
sumber
Pastikan "Enable 32 - Bit Applications" disetel ke false untuk kumpulan aplikasi.
sumber
Pergi ke
IIS7 Application Pool -> advanced settings and set the 32-bit application to true
.sumber
Ini sangat sederhana jika Anda tidak menggunakan SQLite:
Anda dapat menghapus SQLite DLL dari folder bin solusi Anda, lalu dari folder tempat Anda mereferensikan ELMAH. Bangun kembali, dan aplikasi Anda tidak akan mencoba memuat DLL ini yang tidak Anda gunakan.
sumber
Saya memiliki mesin dev 64 bit dan server build 32 bit. Saya menggunakan kode ini sebelum inisialisasi NHibernate. Bekerja pesona pada arsitektur apa pun (baik 2 saya telah diuji)
Semoga ini bisa membantu seseorang.
Guido
sumber
Dalam kasus kami tidak berfungsi karena server produksi kami telah hilang
Paket Redistributable Microsoft Visual C ++ 2010 SP1 (x86)
Kami menginstalnya dan semua berfungsi dengan baik. Application Pool harus mengaktifkan Enable Applications 32-bit menjadi true dan Anda harus versi x86 dari library
sumber
Sebagai seseorang yang harus berurusan dengan beberapa laporan bug tentang Roadkill Wiki dengan masalah yang persis sama, inilah yang perlu Anda lakukan:
System.Data.SQLite.dll
System.Data.SQLite.Linq.dll
Sangat menyebalkan berapa banyak simpanan yang harus Anda lompati saat mendistribusikan kembali biner .ite SQLite, solusi saya untuk Roadkill pada akhirnya adalah menyalin binari yang benar ke folder ~ / bin berdasarkan arsitektur yang Anda gunakan . Sayangnya itu tidak menyelesaikan masalah runtime C ++.
sumber
Saya menyelesaikan ini dengan menginstal System.Data.SQLite dengan ekstensi Nuget. Ekstensi ini dapat digunakan untuk Visual Studio 2010 atau lebih tinggi. Pertama, Anda harus menginstal ekstensi Nuget. Anda bisa mengikuti di sini:
Kedua, sekarang, Anda dapat menginstal SQLite:
Dan sekarang, Anda dapat menggunakan System.Data.SQLite.
Dalam kasus ini, Anda melihat dua folder x64 dan, x86, folder ini berisi SQLite.Interop.dll. Sekarang, masuklah ke jendela properti dll itu dan set action build is content dan Salin ke direktori keluaran adalah Salin selalu.
Jadi, itulah caraku.
Terima kasih. Kim Tho Pham, Kota HoChiMinh, Vietnam. Email: [email protected]
sumber
Perakitan terkait System.Data.SQLite terkait beban manual dapat menyelesaikan ini.
Mengubah Kode gatapia seperti di bawah ini:
sumber
Saya mendapatkan kesalahan ini ketika server windows kami dikonversi dari OS 32 bit ke 64 bit. Perakitan yang melempar kesalahan diatur untuk dikompilasi dalam mode x86 (yaitu mode 32). Saya beralih ke "Any CPU" dan itu berhasil. Anda dapat mengubah nilai ini dengan melakukan hal berikut:
klik kanan pada proyek pergi ke
Properties -> Build -> Platform Target -> change to "Any CPU"
sumber
Saya menyelesaikan ini, anehnya, dengan menginstal System.Data.SQLite melalui aplikasi GUI Nuget, yang bertentangan dengan konsol manajer paket.
Menginstal melalui konsol tidak menyertakan dependensi yang harus dijalankan oleh perpustakaan ini.
sumber
System.Data.SQLite
memiliki ketergantungan padaSystem.Data.SQLite.interop
pastikan kedua paket adalah versi yang sama dan keduanya x86 .Ini adalah pertanyaan lama, tetapi saya mencoba semua hal di atas. Saya sedang mengerjakan proyek x86 , jadi tidak ada dua folder / x86, / x64. Tetapi untuk beberapa alasan,
System.Data.SQLite
itu adalah versi yang berbedaSystem.Data.SQLite.interop
, setelah saya menarik dll yang cocok masalah diperbaiki.sumber
Saya datang dengan 2 solusi cepat. Baik bekerja untuk saya. Saya pikir masalahnya adalah karena izin.
1) Alih-alih menggunakan file Elmah.dll dari direktori net-2.0, saya menggunakan Elmah.dll dari net-1.1.
2) Alih-alih menjaga Elmah.dll dalam direktori bin proyek. Saya membuat direktori dll untuk memasukkannya.
sumber
Cara lain untuk menyiasatinya adalah dengan memutakhirkan aplikasi Anda ke ELMAH 1.2 daripada 1.1.
sumber
Bisakah Anda menghapus folder debug bin Anda dan mengkompilasi ulang lagi?
Atau periksa referensi proyek Anda ke
System.Data.SQLite
, lacak di mana lokasinya, lalu buka dll di reflektor. Jika Anda tidak dapat membukanya, itu artinya dll rusak, Anda mungkin ingin menemukan yang benar atau menginstal ulang .net framework.sumber
Jika Anda menggunakan IIS Express sebagai server web pada mesin pengembangan Anda, saya akan berubah menjadi IIS Lokal. Ini berhasil untuk saya.
sumber
Ini adalah pos lama, tetapi mungkin membantu beberapa orang mencari kesalahan ini untuk mencoba mengatur "Aktifkan Aplikasi 32-Bit" ke True untuk kumpulan aplikasi. Itulah yang mengatasi kesalahan saya. Saya menemukan solusi ini dengan membaca beberapa komentar untuk jawaban @ beckelmw.
sumber
Anda mungkin menginstal paket yang salah. Anda menginginkan paket yang diproduksi oleh Microsoft yang mengimplementasikan model penyedia System.Data.Common.
sumber