Nie można załadować pliku lub zestawu „xxx” ani jednej z jego zależności. Podjęto próbę załadowania programu o niepoprawnym formacie


188

Właśnie sprawdziłem wersję Subversion do nowego folderu. Otworzyłem rozwiązanie i dostaję to po uruchomieniu:

Nie można załadować pliku lub zestawu „xxxx” ani jednej z jego zależności. Podjęto próbę załadowania programu o niepoprawnym formacie.

To ten sam kod, który sprawdziłem jakiś czas temu. Dlaczego teraz to robi? Teraz widzę też Debugowanie x86 zamiast po prostu Debugowanie w folderze bin tego projektu xxx. Co to jest debugowanie x86 i dlaczego nie mam debugowania tylko tak, jak kiedyś w folderze bin?


2
Czy próbowałeś już wszystko odbudować? Czasami rozwiązuje to dla mnie dziwne problemy z zależnością ...
mezoid

Odpowiedzi:


246

Wygląda na to, że jedna część projektu jest budowana tylko dla x86, podczas gdy reszta jest budowana dla dowolnego procesora / x64. To mnie też ugryzło. Czy używasz x64 (lub uh ... IA64)?

Sprawdź właściwości projektu i upewnij się, że wszystko jest budowane pod kątem „Dowolnego procesora”. Jeśli jesteś w Visual Studio, możesz sprawdzić wszystko, przechodząc do menu „x86” lub „Dowolny procesor” (obok menu „Debugowanie” / „Zwolnij”) na pasku narzędzi u góry ekranu i klikając "Manager konfiguracji..."


1
Można go również znaleźć w Project-> Properties-> Build lub Debug-> Properties-> Build. Właśnie zaktualizowano VS2015, wersja 14.0.25123.00 Aktualizacja 2. Ta aktualizacja została właśnie wydana 5/10/16 (wczoraj!). Znalazłem wartość docelową platformy ustawioną na x64, co spowodowało zauważony błąd. Naprawiono to ustawienie „Any CPU”.
Michael D. O'Connor,

179

Jeśli pojawi się ten błąd podczas uruchamiania witryny w IIS 7+ na serwerach 64-bitowych, być może zestawy są 32-bitowe, a pula aplikacji będzie miała opcję „Włącz aplikacje 32-bitowe” ustawioną na False; Ustaw wartość true i zrestartuj witrynę, aby działała.


5
@ Mayhem50 To samo tutaj. To zależy od miejsca wystąpienia błędu. Jeśli to przez serwer WWW Visual Studio i Cassini, Fraser ma rację. Jeśli występuje w IIS7 +, odpowiedź Nicks jest prawdopodobnie najbardziej prawdopodobną poprawką.
Carl Heinrich Hancke

To była dla mnie idealna odpowiedź (przeniosłem stronę z IIS6 na x86 do IIS 7 na x64)
DrStalker

Tak, to zrobiło. Przeniosłem witrynę z IIS6 na x86 do IIS 7 na x64. Dziękuję bardzo!
Lukas,

40

Wystąpił ten błąd podczas próby użycia strasznego obiektu Business Objects 4 dla zestawu .Net SDK.

Wysyłają pięć plików BusinessObjects * .dll, ale wszystkie są 64-bitowe.

Aby załadować moją stronę, musiałem kliknąć Narzędzia \ Opcje , a następnie zmienić to ustawienie w VS2013:

wprowadź opis zdjęcia tutaj


Ta opcja nie istnieje dla mnie. Jedyną opcją dla mnie na tym ekranie w Visual Studio 2010 jest „Używaj IIS Express do tworzenia nowych witryn i projektów opartych na plikach”
Drew Chapin

Mam tę opcję w VS 2017 Professional
SKCS Kamal

33

inetmgr następnie wejdź do Pula aplikacji-> Zaawansowane ustawienia twojej puli-> będzie mieć opcję „Włącz aplikacje 32-bitowe” na true; i ponownie uruchom IIS. Sprawdź ponownie.!


Po drugie. Utworzyłem nową pulę aplikacji dla mojej witryny i zapomniałem zmienić to ustawienie.
AlbatrossCafe

1
To również mnie naprawiło. Jedyną rzeczą, którą musiałem zmienić, była zmiana rurociągu na zintegrowany, ponieważ dało to również błąd po zastosowaniu powyższej poprawki.
AxleWack,

7

Wyjątek BadImageFormatException dla aplikacji działającej na IIS (nie działającej z VS, ponieważ Visual Studio rozwiązuje problem za pomocą kompilacji dla „Dowolnego procesora”) może być spowodowany przez:

Witryna to serwer x64, a domyślne ustawienie puli aplikacji dla opcji Włącz aplikacje 32-bitowe było fałszywe. i masz 32-bitowe zestawy

Na poziomie Visual Studio poprawka jest następująca:

  1. Zmień ustawienie projektu „Docelowy procesor” na „ANYCPU”

7

Upewnij się, że zweryfikowałeś ustawienie „Preferuj 32-bit”. W moim przypadku Visual Studio 2012 miał to ustawienie domyślnie zaznaczone. Próba użycia czegokolwiek z zewnętrznej biblioteki DLL nie powiodła się, dopóki nie zaznaczyłem opcji „Preferuj 32-bit” .

wprowadź opis zdjęcia tutaj


4

Jest to zdecydowanie problem związany z tym, że niektóre projekty są budowane pod kątem zgodności z architekturą x86 zamiast jakiegokolwiek procesora. Gdybym musiał zgadywać, powiedziałbym, że niektóre odniesienia między twoimi projektami prawdopodobnie odwołują się do bibliotek dll w niektórych folderach bin \ debugowania, zamiast być odwołaniami do projektu.

Kiedy projekt jest kompilowany dla x86 zamiast „Any CPU”, biblioteki DLL przechodzą do folderu bin \ x86 \ debugowania zamiast bin \ debugowania (prawdopodobnie tam, gdzie szukają twoich referencji).

Ale w każdym razie powinieneś używać referencji między projektami.


0

jeśli podczas pracy w Visual Studio z IIS Express działa, a gdy publikacja nie powiedzie się, spróbuj:wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.