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.

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!


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.


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


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


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".


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.


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

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


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"


0

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


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!


0

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

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.