Bir SQL Server çoğaltma projesinde "Yanlış biçime sahip bir program yüklenmeye çalışıldı" hatası alıyorum


318

Kesin hata aşağıdaki gibidir

Dosya veya derleme 'Microsoft.SqlServer.Replication, Sürüm = 9.0.242.0, Kültür = nötr, PublicKeyToken = 89845dcd8080cc91' veya bağımlılıklarından biri yüklenemedi. Yanlış biçime sahip bir program yüklenmeye çalışıldı.

Kısa bir süre önce, başka bir projeye iki ay geçtikten sonra bu proje üzerinde çalışmaya başladım. Daha önce mükemmel çalıştı ve tüm referansları iki kez kontrol ettim.

Yanıtlar:


405

Aşağıdaki kelliğin cevabı doğrudur, ancak AppPool'unuzda 32 bit uygulamaları etkinleştirmeniz gerekebilir.

Kaynak: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load- bir-program ile-bir-yanlış format /

Yerel makinemde çalışacak bir uygulama ayarlarken (Vista 64bit çalışıyor) bu hatayla karşılaştım:

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

Açıkçası, uygulama ChilKat bileşenlerini kullanıyor , ancak kullandığımız versiyonun sadece 32bit versiyonu olduğu anlaşılıyor.

Bu hatayı gidermek için, IIS'deki uygulama havuzumu 32 bit uygulamalara izin verecek şekilde ayarladım. IIS Yöneticisi'ni açın, uygulama havuzunu sağ tıklatın ve Gelişmiş Ayarlar'ı seçin (Aşağıya bakın)

resim açıklamasını buraya girin

Ardından "32 bit Uygulamaları Etkinleştir" seçeneğini True olarak ayarlayın.

resim açıklamasını buraya girin

Hepsi tamam!


Bu, tüm uygulama havuzunun tam 64 bit değil 32 bit olarak çalışmasına neden olur mu? 64-bit / tüm platformların bağımlılığını yeniden derlemek daha iyi bir çözüm olabilir mi? NFOP nedeniyle bu sorunu yaşıyorum, ancak açık kaynak olduğundan, yeniden derleyebilir.
jamiebarrow

2
Bağlantı çalışmıyor, ancak açıklamanız sorunumu çözmek için yeterliydi. +1
Andrew Shepherd

32 bit uygulamaların nasıl etkinleştirileceğine ilişkin talimatlarla bağlantı kurun: blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
Brandon S

15
Bu AppPool çözümünün yalnızca ASP.NET uygulamaları için geçerli olduğunu ve ASP.NET veya IIS'yi hiç kullanmamış / yapılandırmamış bazı geliştiricileri karıştırabileceğini belirtmek gerekir.
galaktor

IIS7'de yalnızca IIS7.5'te düzeltmez
FlavorScape

120

Çözümü buldum. Son zamanlarda makinemi Windows 2008 Server 64-bit'e yükselttim. SqlServer.Replication ad alanı 32 bit platformlar için yazılmıştır. Yeniden çalıştırmak için tek yapmam gereken, Proje Oluşturma Özellikleri'ndeki Hedef Platformu X86 olarak ayarlamaktı.


Bir DLL ile bu sorunu yaşıyorum, ama benim Proje> HDP Özellikleri ... "Build" sekmesi (görünüşte her şey ama, ama değil) yok. Derleme ve Hata Ayıklama sekmelerinin her ikisinde de "Platform" açılır menüsü bulunur, ancak açılır menüdeki her iki durumda da tek öğe "Etkin (Herhangi Bir CPU)" dur.
B. Clay Shannon

Yukarıdaki sorunun tersiyle karşılaştım. 64 bitte her şeyim vardı ve Build hedefim Any CPU'ydu. Bunu 64-bit olarak değiştirdiğimde gayet iyi çalıştı :)
Madhurya Gandi

87

Web projenizin özellik sayfasındaki Platform Hedefi değerini olarak değiştirin Any CPU.

resim açıklamasını buraya girin


Maalesef bir etkisi yok.
Jonathan

4
Yanılmışım - bu, tüm 'bin' klasörlerimden kurtulduktan sonra işe yaradı. Teşekkürler!
Jonathan

Ayrıca benim sorunum düzeltildi, ancak bunu çözümümdeki HER proje için yaptıktan sonra. Bahsedilen adımlar C # projeleri içindir. VB.NET projeleri için, Proje Özellikleri> Derleme> Gelişmiş Derleme Seçenekleri> Hedef CPU'yu "AnyCPU" olarak değiştirin
Francois Botha

6
Benim durumumda, proje zaten "Herhangi bir CPU" yu hedefliyordu. Ama ben 64-bit Windows çalıştırıyorum ve eski bir donanım sürücüsü DllImport çalışıyordu. Hedefi x86 olarak değiştirmek benim için düzeltti.
bsegraves

Benim durumumda x64 altında koşmak istedim. Çalışmıyordu. Tüm önerileri değiştirdikten sonra, Web altındaki 'Bitness'i de x64 olarak değiştirmek zorunda kaldım
SKCS Kamal

52

IIS -> Uygulama Havuzu -> Gelişmiş Ayarlar -> 32 bit Uygulamaları Etkinleştir'e gidin


Clay, Hangi IIS sürümünü kullanıyorsunuz?
Harpal

23

Kısa bir süre önce kodu Visual Studio'dan çalıştırmaya çalışırken sorun yaşadık. Bu durumda
ARAÇLAR> SEÇENEKLER> Projeler ve Çözümler> WEB PROJELERİNİ yapmanız ve "Web siteleri ve projeler için IIS Express'in 64 bit sürümünü kullan" seçeneğini işaretlemeniz gerekir.


1
Sonuçta benim için çalıştı. Özellikle Web API'yi Service Fabric kitaplıklarıyla hata ayıklamaya çalışan kişiler için !!! Projenizde herhangi bir Service Fabric DLL dosyası kullanıyorsanız, yukarıdaki çözümü kullandığınızdan emin olun.
Chris Dutra

Bu benim için çalışan SADECE çözüm. Teşekkürler. : D
Jeremy Styers

Benim için de çalış!
Cù Đức Hiếu

11

Visual Studio'nun kendisi içinde bir ASP.NET MVC 3 projesinde bu hatayı alanlar için :

Üzerinde çalıştığım bir ASP.NET MVC 3 uygulamasında, bir dağıtım sunucusunda eksik olduğu bir sorunu çözmek için bir projeye Microsoft.SqlServer.BatchParser'a bir başvuru eklemeyi denedim. (Uygulamamız SMO kullanıyor; doğru düzeltme, dağıtım sunucusuna SQL Server Yerel İstemci ve birkaç başka şey yüklemekti.)

BatchParser referansını kaldırdıktan sonra bile, açtığım her ASP.NET MVC 3 sayfasında "BatchParser DLL" e atıfta bulunarak "Bir girişim yapıldı ..." hatasını almaya devam ettim ve bu hatayı düzinelerce sayfa ayrıştırma izledi hatalar.

Bu durumda, bir dosya araması yapın ve DLL dosyasının hala projenizin \ bin klasörlerinden birinde olup olmadığını görün. Yeniden oluşturma yapsanız bile, Visual Studio tüm \ bin klasörlerinizdeki her şeyi temizlemeyebilir. Ben DLL depo gözünden sildi ve tekrar inşa, hata gitti.


Ben sadece bir yeniden yaptım ve sorun elle DLL silmeye gerek kalmadan gitti. Teşekkürler!
Trevor

4

Bunu IIS Express'e karşı Windows 10'da bir MVC5 uygulamasında yaşadım. Benim çözümüm şuydu:

  • Araçlar =>
    • Seçenekler =>
      • Projeler ve Çözümler =>
        • Web Projeleri =>
          • Web siteleri ve projeler için IIS Express'in 64 bit sürümünü kullanma

3

32-bit (true) olarak çalışır

Eğer bu uzunluğu alırsanız sıfırdan az olamaz. Parametre adı: iis sunucu yapılandırmasındaki uzunluk sorunu, basit bir şey yapmak için sql sunucu adınız ve sunucu adınız gibi web.config dosyasındaki bağlantı dizesini değiştirin ve iis'i yeniden başlatın ve çalıştığı sayfayı yüklemeyi deneyin


2

Hata alırken Visual Studio 2012'de Yayımlanıyorsa, Yayım sihirbazında "Yayımlama sırasında derle" seçeneğinin işaretini kaldırmayı deneyin .

"Yayınlama sırasında derleme" seçeneğinin işaretini kaldırın


0

Windows form uygulamasında bunu yapıyorum, Project-> Properties-> Build-> Check Prefer 32-bit onay kutusunu sağ tıklatın. Hepinize teşekkürler


0
  1. Burada bulunan geçici test dizinini silin C: \ Users (Kullanıcı) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Visual Studio'da tüm projeleri x64 olarak ayarlama

  3. Varsayılan işlemci mimarisini x64 (Test / TestSettings / Varsayılan İşlemci Mimarisi) olarak ayarlayın.

Çözüm dosyasını temizlediğinizden emin olun.


0

Proje özelliklerindeki Hedef Çerçeveyi .NET Framework 4.7.1'den 4.6.2'ye değiştirmek benim için çalıştı.

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.