Saya mencoba menginstal layanan Windows menggunakan InstallUtil.exe dan mendapatkan pesan kesalahan
System.BadImageFormatException: Tidak dapat memuat file atau assembly '
{xxx.exe}
' atau salah satu dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah.
Apa yang memberi?
EDIT: (Not by OP) Pesan lengkap diekstrak dari dup mendapatkan lebih banyak hits [untuk googleability]:
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C: \ xxx.exe Microsoft (R) .NET Framework Instalasi utilitas Versi 4.0.30319.1 Hak Cipta (c) Microsoft Corporation. Seluruh hak cipta.
Pengecualian terjadi saat menginisialisasi penginstalan: System.BadImageFormatException: Tidak dapat memuat file atau assembly 'file: /// C: \ xxx.exe' atau salah satu dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah ..
Pastikan Framework terbaru (yang Anda gunakan untuk mengompilasi aplikasi Anda) adalah yang pertama di PATH. Itu memecahkan masalah saya. (Ditemukan di forum )
sumber
Saya pikir Anda menggunakan alat versi 64-bit untuk menginstal aplikasi 32-bit. Saya juga menghadapi masalah ini hari ini dan menggunakan jalur Kerangka ini untuk memenuhi.
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
dan seharusnya menginstal aplikasi 32-bit Anda dengan baik.
sumber
Kuncinya adalah menyetel setelan prosesor yang cocok untuk proyek yang ada di dua tempat.
Dan juga pastikan pengaturan arsitekturnya sama di menu Test >> Test Settings >> Default Processor Architecture >> seperti yang ditunjukkan di bawah ini.
Ini untuk VS2013 tetapi mungkin sama untuk versi lain juga.
Pembaruan - Untuk VS2019:
sumber
Oke, ini masalah yang saya alami, dan, yang memperbaikinya, tampaknya sangat relevan dengan hal di atas.
Saya menggunakan Visual Studio 2010 Express. Saya menulis layanan pengujian yang tidak benar-benar melakukan apa pun. Itu hanya latihan untuk hal yang sebenarnya nanti.
Saya menulis layanan dan mencoba menginstalnya menggunakan
installutil.exe
dan mendapatkan kesalahan berikut:Sejauh ini sama dengan penulis aslinya.
Pengamatan Ruben di atas tentang 32 bit output Visual Studio 2010 menjadi penyelamat disini.
Saya menggunakan versi 64-bit
installutil.exe
dan cukup yakin, output dari Visual Studio 2010 build adalah 32-bit. Hanya untuk menambahkan sedikit nilai ekstra di sini, Anda dapat menemukan versi 32-bit dari kerangka .NET terbaru dan yang terkaitinstallutil.exe
di folder C: \ Windows \ Microsoft.NET \ framework . Menggunakan versi iniinstallutil.exe
memperbaiki masalah saya; layanan dipasang tanpa hambatan!Saya harap ini membantu orang lain di luar sana.
sumber
Setelah mencoba semua solusi yang disebutkan, saya menemukan
PlatformTarget
entah bagaimana ditambahkan keAnyCPU
konfigurasi dalam proyek saya .csproj.Menghapus garis berhasil untuk saya.
sumber
Processor Architecture for AnyCPU Projects
) semuanya mulai bekerja kembali.Saya mengalami masalah ini dengan Proyek WinForms menggunakan VS 2015. Solusi saya adalah:
sumber
Saya memiliki masalah yang sama. Saya menggunakan perintah standar untuk eksekusi. Itu memanggil X64 ro dijalankan terhadap tes X86. Saya perlu menentukan X86 dan bukan versi X64 dari nunit-runner.
sumber
Meringkas, Build dan Project \ Build \ Platform harus disetel ke x64 agar berhasil menginstal layanan 64 bit pada sistem 64 bit.
sumber
Masalah saya berbeda. Ini terjadi setelah komputer windows 7 saya mati secara tidak terduga. Saya melakukan solusi bersih dan berjalan seperti yang diharapkan.
sumber
Dalam kasus memiliki pesan ini dalam pengujian langsung , tetapi tidak dalam pengujian unit , itu karena rakitan yang dipilih disalin dengan cepat
$(SolutionDir)\.vs\$(SolutionName)\lut\0\0\x64\Debug\
. Tetapi kadang-kadang beberapa rakitan tidak dapat dipilih , misalnya, VC ++ dll dalam kasus interop c ++ / c # proyek.Pasca-build
xcopy
tidak akan memperbaiki masalah, karena file yang disalin akan dihapus oleh mesin uji langsung.Satu-satunya solusi hingga saat ini (28 Desember 2018), adalah menghindari pengujian Langsung, dan melakukan semuanya dalam pengujian unit dengan atribut yang
[TestCategory("SkipWhenLiveUnitTesting")]
diterapkan ke kelas pengujian atau metode pengujian.Bug ini terlihat di Visual Studio 2017 hingga 15.9.4, dan perlu ditangani oleh tim Visual Studio.
sumber
Target build x64 Target Server Hosting IIS 64 Bit
Klik kanan appPool hosting yang menjalankan situs web / aplikasi web dan atur aktifkan 32 bit application = false.
sumber
Saya menghadapi masalah ini hari ini. Dalam kasus saya, target platform aplikasi saya (memiliki referensi ke 64-bit dll) disetel ke
AnyCPU
tetapiPrefer 32-bit
kotak centang di bawah bagian target platform dicentang secara default. Ini adalah masalah dan bekerja dengan baik setelahPrefer 32-bit
opsi un-check .sumber
Kami menemukan solusi berbeda untuk masalah dengan gejala yang sama:
Kami melihat kesalahan ini ketika memperbarui proyek dari .net 4.7.1 ke 4.7.2.
Masalahnya adalah meskipun kami tidak mereferensikan System.Net.Http lagi dalam proyek, itu terdaftar di bagian dependentAssembily dari web.config kami. Menghapus ini dan referensi assembly yang tidak digunakan lainnya dari web.config memecahkan masalah.
sumber
Masalahnya adalah bahwa setiap
System.BadImageFormatException: Could not load file or assembly
termasuk yang tidak terkaitinstallutil.exe
sama sekali mengarah ke utas ini.Jika masalah Anda terkait dengan
WindowsBase
atauPresentationFramework
dll dan Anda menginstal penganalisis, pastikan untuk menginstalnya untuk semua proyek dalam solusi Anda atau tidak satupun dari mereka.Referensikan seluruh kerangka kerja dalam
.csproj
file perpustakaan Anda, bukan hanya keduanyadlls
:Hapus
bin
danobj
kotor, bersihkan larutan dan bangun kembali.sumber