Tidak dapat memuat file atau rakitan 'xxx' atau salah satu dari dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah


188

Saya baru saja memeriksa revisi dari Subversion ke folder baru. Membuka solusi dan saya mendapatkan ini ketika dijalankan:

Tidak dapat memuat file atau rakitan 'xxxx' atau salah satu dari dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah.

Ini adalah kode yang sama dengan yang saya periksa beberapa waktu yang lalu. Kenapa sekarang melakukan ini? Saya sekarang juga melihat Debug x86 bukan hanya Debug di folder bin proyek xxx itu. Apa itu Debug x86 dan mengapa saya tidak hanya memiliki Debug seperti dulu di folder bin?


2
Sudahkah Anda mencoba membangun kembali semuanya? Kadang-kadang itu memperbaiki masalah ketergantungan aneh bagi saya ...
mezoid

Jawaban:


246

Kedengarannya seperti salah satu bagian dari proyek sedang dibangun hanya untuk x86 sedangkan sisanya sedang dibangun untuk CPU / x64. Ini juga menggangguku. Apakah Anda menjalankan x64 (atau uh ... IA64)?

Periksa properti proyek dan pastikan semuanya sedang dibangun untuk "Any CPU". Jika Anda berada di Visual Studio, Anda dapat memeriksa semuanya dengan masuk ke menu "x86" atau "Any CPU" (di sebelah menu "Debug" / "Release") pada bilah alat di bagian atas layar dan mengklik "Manajer Konfigurasi ..."


1
Ini juga di Project-> Properties-> Build, atau Debug-> Properties-> Build. Baru saja memperbarui VS2015, versi 14.0.25123.00 Pembaruan 2. Pembaruan ini baru saja dirilis 5/10/16 (kemarin!). Saya menemukan Target Platform diatur ke x64, yang menyebabkan kesalahan dicatat. Pengaturan ke "Any CPU" memperbaikinya.
Michael D. O'Connor

179

Jika Anda mendapatkan kesalahan ini saat menjalankan situs di IIS 7+ pada server 64bit, Anda mungkin memiliki rakitan yang 32bit dan kumpulan aplikasi Anda akan memiliki opsi "Aktifkan Aplikasi 32-Bit" yang disetel ke False; Setel ini menjadi true dan mulai ulang situs untuk membuatnya berfungsi.


5
@ Mayhem50 Sama di sini. Itu tergantung di mana kesalahan terjadi. Jika itu melalui server web Visual Studio & Cassini, Fraser benar. Jika itu terjadi di IIS7 +, jawaban Nicks mungkin adalah perbaikan yang paling mungkin.
Carl Heinrich Hancke

Ini adalah jawaban sempurna bagi saya (memindahkan situs dari IIS6 pada x86 ke IIS 7 pada x64)
DrStalker

Yap, ini berhasil. Saya memindahkan situs dari IIS6 pada x86 ke IIS 7 pada x64. Terima kasih banyak!
Lukas

40

Saya memiliki kesalahan ini ketika mencoba menggunakan Objek Bisnis 4 yang mengerikan untuk .Net SDK.

Mereka mengirim lima file BusinessObjects * .dll, tetapi semuanya 64-bit.

Untuk membuka halaman web saya, saya perlu mengklik Tools \ Options , lalu ubah pengaturan ini di VS2013:

masukkan deskripsi gambar di sini


Pilihan itu tidak ada untuk saya. Satu-satunya pilihan pada layar ini untuk saya di bawah Visual Studio 2010 adalah "Gunakan IIS Express untuk situs web dan proyek berbasis file baru"
Drew Chapin

Saya memiliki opsi ini dalam VS 2017 Professional
SKCS Kamal

33

inetmgr kemudian datang ke Application pool-> Pengaturan lanjutan pool-> Anda akan memiliki opsi "Aktifkan Aplikasi 32-Bit" yang disetel ke true; dan mulai ulang IIS. Periksa lagi.!


Kedua ini. Saya membuat kumpulan aplikasi baru untuk situs saya dan lupa untuk beralih pengaturan ini.
AlbatrossCafe

1
Ini memperbaikinya bagi saya juga. Satu-satunya hal lain yang perlu saya ubah adalah mengubah Pipeline menjadi terintegrasi, karena ini memberi saya kesalahan juga setelah perbaikan di atas diterapkan.
AxleWack

7

BadImageFormatException pada aplikasi yang berjalan di IIS (tidak berjalan dari VS, karena visual studio memperbaiki masalah dengan menggunakan build untuk "Any CPU") dapat disebabkan oleh hal berikut:

Situs ini adalah server yang x64 dan pengaturan default Application Pool untuk Mengaktifkan Aplikasi 32-Bit adalah False. dan Anda memiliki majelis 32-bit

Pada tingkat Visual Studio, perbaikannya adalah:

  1. Ubah pengaturan proyek "Target CPU" ke "ANYCPU"

7

Pastikan Anda memverifikasi pengaturan Anda untuk "Lebih suka 32-bit". Dalam kasus saya Visual Studio 2012 pengaturan ini diperiksa secara default. Mencoba menggunakan apa pun dari DLL eksternal gagal sampai saya menghapus centang "Lebih suka 32-bit" .

masukkan deskripsi gambar di sini


4

Ini jelas merupakan masalah dengan beberapa proyek yang sedang dibangun untuk kompatibilitas x86, bukan CPU. Jika saya harus menebak saya akan mengatakan bahwa beberapa referensi antara proyek Anda mungkin merujuk dll di beberapa folder bin \ debug bukannya referensi proyek.

Ketika sebuah proyek dikompilasi untuk x86 dan bukannya 'Setiap CPU', dll akan masuk ke folder bin \ x86 \ debug bukannya bin \ debug (yang mungkin di mana referensi Anda cari).

Tetapi bagaimanapun juga, Anda harus menggunakan referensi proyek di antara proyek Anda.


0

if sementara Di studio visual dengan IIS express berfungsi dan ketika diterbitkan gagal coba ini:masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.