Saya mendapatkan "Upaya telah dilakukan untuk memuat program dengan format yang salah" kesalahan pada proyek replikasi SQL Server

318

Kesalahan yang tepat adalah sebagai berikut

Tidak dapat memuat file atau rakitan 'Microsoft.SqlServer.Replication, Versi = 9.0.242.0, Budaya = netral, PublicKeyToken = 89845dcd8080cc91' atau salah satu dari ketergantungannya. Upaya telah dilakukan untuk memuat program dengan format yang salah.

Saya baru-baru ini mulai mengerjakan proyek ini lagi setelah pindah dua bulan ke proyek lain. Ini berfungsi dengan baik sebelumnya, dan saya telah memeriksa ulang semua referensi.

botak
sumber

Jawaban:

405

The jawaban dengan botak di bawah ini benar, tetapi Anda juga mungkin perlu mengaktifkan aplikasi 32-bit dalam AppPool Anda.

Sumber: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependency-an-attempt-was-made-to-load- a-program-dengan-format-salah /

Saat menyiapkan aplikasi untuk dijalankan di mesin lokal saya (menjalankan Vista 64bit) saya mengalami kesalahan ini:

Tidak dapat memuat file atau perakitan ChilkatDotNet2atau salah satu dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah.

Jelas, aplikasi ini menggunakan komponen ChilKat , tetapi tampaknya versi yang kami gunakan, hanya versi 32bit.

Untuk mengatasi kesalahan ini, saya mengatur kumpulan aplikasi saya di IIS untuk memungkinkan aplikasi 32bit. Buka IIS Manager, klik kanan pada kumpulan aplikasi, dan pilih Pengaturan Lanjut (Lihat di bawah)

masukkan deskripsi gambar di sini

Kemudian setel "Aktifkan Aplikasi 32-bit" ke True.

masukkan deskripsi gambar di sini

Semua selesai!

bboyle1234
sumber
Apakah ini akan menyebabkan seluruh kumpulan aplikasi berjalan sebagai 32-bit, dan tidak penuh 64-bit? Apakah kompilasi ulang ketergantungan untuk 64-bit / semua platform menjadi solusi yang lebih baik? Saya mengalami masalah ini karena NFOP, tetapi karena ini open source, saya bisa mengompilasinya kembali.
jamiebarrow
2
Tautan tidak berfungsi, tetapi penjelasan Anda cukup untuk menyelesaikan masalah saya. +1
Andrew Shepherd
Tautkan dengan petunjuk tentang cara mengaktifkan aplikasi 32-bit: blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
Brandon S
15
Mungkin perlu dicatat bahwa solusi AppPool ini hanya berlaku untuk aplikasi ASP.NET - dapat membingungkan beberapa pengembang yang tidak pernah menggunakan / mengkonfigurasi ASP.NET atau IIS.
galaktor
tidak memperbaikinya di IIS7 hanya di IIS7.5
FlavorScape
120

Saya sudah menemukan solusinya. Saya baru saja memutakhirkan mesin saya ke Windows 2008 Server 64-bit. Ruang nama SqlServer.Replication ditulis untuk platform 32-bit. Yang perlu saya lakukan untuk menjalankannya lagi adalah mengatur Platform Target di Project Build Properties menjadi X86.

botak
sumber
Saya mengalami masalah dengan DLL ini, tetapi Project> HDP Properties saya ... tidak memiliki tab "Build" (sepertinya semuanya tetapi, tapi bukan itu). Baik tab Compile dan Debug memiliki dropdown "Platform", tetapi satu-satunya item dalam dropdown dalam kedua kasus adalah "Aktif (Semua CPU)".
B. Clay Shannon
Kebetulan saya mengalami kebalikan dari masalah di atas. Saya memiliki semuanya berjalan dalam 64 bit dan target Build saya adalah CPU Apapun. Ketika saya mengubah ini menjadi 64-bit itu bekerja dengan sangat baik :)
Madhurya Gandi
87

Ubah nilai Target Platform pada halaman properti proyek web Anda menjadi Any CPU.

masukkan deskripsi gambar di sini

p.campbell
sumber
Sayangnya, tidak ada efek.
Jonathan
4
Saya salah - ini berhasil, setelah saya menyingkirkan semua folder 'bin' saya. Terima kasih!
Jonathan
Juga memperbaiki masalah saya, tetapi hanya setelah melakukan ini untuk setiap proyek dalam solusi saya. Langkah-langkah yang disebutkan adalah untuk proyek C #. Untuk proyek VB.NET, ubah Properti Proyek> Kompilasi> Opsi Kompilasi Lanjut> CPU Target ke "AnyCPU"
Francois Botha
6
Dalam kasus saya, proyek itu sudah menargetkan "CPU Apa". Tapi saya menjalankan Windows 64-bit dan mencoba DllImport driver perangkat keras jadul. Secara khusus mengubah target menjadi x86 memperbaikinya untuk saya.
bsegraves
Dalam kasus saya, saya ingin menjalankan di bawah x64. Itu tidak bekerja. Setelah mengubah semua rekomendasi, saya juga harus mengubah 'Bitness' di Web juga menjadi x64
SKCS Kamal
52

Pergi ke IIS -> Application Pool -> Pengaturan Lanjut -> Aktifkan Aplikasi 32-bit

Harpal
sumber
Clay, versi IIS mana yang Anda gunakan?
Harpal
23

Kami baru-baru ini mengalami masalah ketika mencoba menjalankan kode dari Visual Studio. Dalam hal ini Anda perlu melakukan
PERANGKAT> PILIHAN> Proyek dan Solusi> PROYEK WEB dan periksa "Gunakan versi 64 bit IIS Express untuk situs web dan proyek".

Justin
sumber
1
Inilah yang akhirnya berhasil untuk saya. Terutama bagi orang yang mencoba men-debug API Web dengan pustaka Fabric Layanan !!! Jika Anda menggunakan DLL Fabric Layanan di proyek Anda, pastikan Anda menggunakan solusi di atas.
Chris Dutra
Ini adalah solusi HANYA yang bekerja untuk saya. Terima kasih. : D
Jeremy Styers
Bekerja untukku juga!
Cù Đức Hiếu
11

Bagi mereka yang mendapatkan kesalahan ini dalam proyek ASP.NET MVC 3 , dalam Visual Studio itu sendiri:

Dalam aplikasi ASP.NET MVC 3 yang sedang saya kerjakan, saya mencoba menambahkan referensi ke Microsoft.SqlServer.BatchParser ke proyek untuk menyelesaikan masalah di mana ada yang hilang pada server penempatan. (Aplikasi kami menggunakan SMO; perbaikan yang benar adalah menginstal SQL Server Native Client dan beberapa hal lain di server penyebaran.)

Bahkan setelah saya menghapus referensi ke BatchParser, saya terus mendapatkan kesalahan "Upaya telah dilakukan ...", merujuk DLL BatchParser, pada setiap halaman ASP.NET MVC 3 yang saya buka, dan kesalahan itu diikuti oleh puluhan halaman parsing kesalahan.

Jika ini terjadi pada Anda, lakukan pencarian file dan lihat apakah DLL masih di salah satu folder \ bin proyek Anda. Bahkan jika Anda melakukan pembangunan kembali, Visual Studio tidak perlu membersihkan semuanya di semua folder \ bin Anda. Ketika saya menghapus DLL dari nampan dan membangun lagi, kesalahan hilang.

Ryan Lundy
sumber
Saya baru saja melakukan pembangunan kembali dan masalahnya hilang tanpa harus secara manual menghapus DLL. Terima kasih!
Trevor
4

Saya memiliki ini di aplikasi MVC5 di Windows 10 melawan IIS Express. Solusi saya adalah sebagai berikut:

  • Alat =>
    • Pilihan =>
      • Proyek dan Solusi =>
        • Proyek Web =>
          • Gunakan versi 64 bit IIS Express untuk situs web dan proyek
krillgar
sumber
3

ubah ke 32-bit (benar) itu berfungsi

jika Anda mendapatkan Panjang ini tidak boleh kurang dari nol. Nama parameter: masalah panjang dalam konfigurasi server iis, lakukan hal sederhana mengubah string koneksi dalam file web.config seperti nama server sql Anda dan nama server dan restart iis kemudian coba muat halaman yang berfungsi

munwar shaiik
sumber
2

Jika Menerbitkan di Visual Studio 2012 saat kesalahan coba hapus centang pada opsi "Procompile during publishing" di wizard terbitkan .

Hapus centang "Pra-kompilasi selama penerbitan"

SushiGuy
sumber
0

dalam aplikasi windows form saya melakukan ini, Klik kanan pada Project-> Properties-> Build-> Centang Lebih suka 32-bit checkbox. Terima kasih semuanya

Amirhossein Yari
sumber
0
  1. Hapus direktori temp test yang terdapat di sini C: \ Users (Pengguna) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Atur semua proyek ke x64 di Visual Studio

  3. Atur arsitektur prosesor default ke x64 (Test / TestSettings / Default Processor Architecture).

Pastikan untuk membersihkan membangun solusi file. Semoga ini bisa membantu!

Madhurya Gandi
sumber
0

Mengubah Kerangka Target di properti proyek dari .NET Framework 4.7.1 ke 4.6.2 bekerja untuk saya.

sussexrick
sumber