Dosya veya montaj 'xxx' veya bağımlılıklarından biri yüklenemedi. Yanlış biçime sahip bir program yüklenmeye çalışıldı


188

Subversion'dan yeni bir klasöre bir düzeltme yaptım. Çözüm açıldı ve ben çalışırken bunu elde:

Dosya veya montaj 'xxxx' veya bağımlılıklarından biri yüklenemedi. Yanlış biçime sahip bir program yüklenmeye çalışıldı.

Bu, bir süre önce kontrol ettiğim kodla aynı. Neden şimdi bunu yapıyor? Şimdi de sadece xxx projenin bin klasöründe Debug yerine bir Debug x86 görüyorum. Debug x86 nedir ve neden sadece bin klasöründe kullandığım gibi Debug'u kullanmıyorum?


2
Hepsini yeniden inşa etmeyi denedin mi? Bazen bu benim için garip bağımlılık sorunları giderir ...
mezoid

Yanıtlar:


246

Projenin bir kısmı yalnızca x86 için üretilirken, geri kalanı herhangi bir CPU / x64 için oluşturulmuş gibi görünüyor. Bu da beni ısırdı. Bir x64 (veya uh ... IA64) çalıştırıyor musunuz?

Proje özelliklerini kontrol edin ve her şeyin "Herhangi bir CPU" için oluşturulduğundan emin olun. Visual Studio'daysanız, ekranın üst kısmındaki araç çubuğunda "x86" veya "Herhangi bir CPU" menüsüne ("Hata Ayıkla" / "Serbest Bırak" menüsünün yanında) giderek her şeyi kontrol edebilirsiniz. "Yapılandırma yöneticisi..."


1
Aynı zamanda Project-> Properties-> Build veya Debug-> Properties-> Build. Sadece VS2015, sürüm 14.0.25123.00 Güncelleme 2'de güncellendi. Bu güncelleme 5/10/16 (dün!) Platform Hedefi değerinin x64 olarak ayarlandığını gördüm ve bu da hataya neden oldu. "Herhangi bir CPU" olarak ayarlanması sorunu çözdü.
Michael D. O'Connor

179

Siteyi 64bit sunucularda IIS 7+ sürümünde çalıştırırken bu hatayı alırsanız, 32bit olan derlemeleriniz olabilir ve uygulama havuzunuzda "32-Bit Uygulamaları Etkinleştir" seçeneği Yanlış olarak ayarlanmış olacaktır; Bunu true olarak ayarlayın ve çalışmasını sağlamak için siteyi yeniden başlatın.


5
@ Mayhem50 Burada da aynı. Hatanın oluştuğu yere bağlıdır. Visual Studio ve Cassini web sunucusu üzerinden, Fraser doğru. IIS7 + 'da gerçekleşirse, Nicks yanıtı muhtemelen en olası çözümdür.
Carl Heinrich Hancke

Bu benim için mükemmel bir yanıttı (bir siteyi
x86'da IIS6'dan x64'te

Evet, başardı. Bir siteyi x86'da IIS6'dan x64'te IIS 7'ye taşıdım. Çok teşekkür ederim!
Lukas

40

Net SDK için korkunç Business Objects 4 kullanmaya çalışırken bu hatayla karşılaştım .

Beş BusinessObjects * .dll dosyası gönderiyorlar, ancak hepsi 64 bit.

Web sayfamın yüklenmesini sağlamak için, Araçlar \ Seçenekler'e tıkladıktan sonra VS2013'te bu ayarı değiştirmem gerekiyordu:

resim açıklamasını buraya girin


Bu seçenek benim için mevcut değil. Visual Studio 2010 altında bu ekranda benim için tek seçenek "Yeni dosya tabanlı web siteleri ve projeler için IIS Express kullanın"
Drew Chapin

VS 2017 Professional'da bu seçeneği kullanıyorum
SKCS Kamal

33

inetmgr daha sonra Uygulama havuzuna gel-> havuzunuzun gelişmiş ayarı-> "32-Bit Uygulamaları Etkinleştir" seçeneği true olarak ayarlanmış olacaktır; ve IIS'yi yeniden başlatın. tekrar kontrol et.!


İkinci olarak. Sitem için yeni bir uygulama havuzu oluşturdum ve bu ayarı değiştirmeyi unuttum.
AlbatrossCafe

1
Bu benim için de düzeltildi. Değiştirmem gereken tek şey, yukarıdaki düzeltmeyi uyguladıktan sonra bana bir hata verdiğinden, Boru Hattını entegre olarak değiştirmekti.
AxleWack

7

IIS üzerinde çalışan bir uygulamadaki BadImageFormatException (VS, herhangi bir CPU'nun derlemesini kullanarak sorunu giderdiği için VS'den çalışmıyor) aşağıdakilerden kaynaklanabilir:

Site x64 olan bir sunucudur ve Uygulama Havuzu'nun 32-Bit Uygulamaları Etkinleştir için varsayılan ayarı Yanlış'tır. ve 32 bit derlemeleriniz var

Visual Studio düzeyinde, düzeltme:

  1. "Hedef CPU" proje ayarını "ANYCPU" olarak değiştirin

7

"32 bit'i tercih et" ayarınızı doğruladığınızdan emin olun. Benim durumumda, Visual Studio 2012 bu ayarı varsayılan olarak işaretlemişti. "32-bit'i tercih et" seçeneğinin işaretini kaldırana kadar harici bir DLL dosyasından bir şey kullanmaya çalışmak başarısız oldu .

resim açıklamasını buraya girin


4

Kesinlikle herhangi bir CPU yerine x86 uyumluluğu için inşa edilen bazı projelerde bir sorun var. Tahmin etmeliyim ki, projeleriniz arasındaki referanslardan bazıları muhtemelen proje referansları yerine bin \ debug klasörlerinin bazılarında dll'lere atıfta bulunuyor.

Bir proje 'Any CPU' yerine x86 için derlendiğinde, dll'ler bin \ debug yerine bin \ x86 \ debug klasörüne gider (muhtemelen referanslarınızın bulunduğu yer).

Ancak her durumda, projeleriniz arasında proje referanslarını kullanmalısınız.


0

IIS express ile görsel stüdyoda çalışırken ve yayınlanamadığı zaman şunu deneyin:resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.