"Podjęto próbę załadowania programu o nieprawidłowym formacie" nawet wtedy, gdy platformy są takie same

Wywołuję funkcje z 32-bitowej niezarządzanej biblioteki DLL NA 64-bitowym systemie. To co dostaję to:

BadImageFormatException: podjęto próbę załadowania programu o nieprawidłowym formacie. (Wyjątek od HRESULT: 0x8007000b)

Na początku miałem swoje projekty ustawione na dowolną platformę CPU, więc zmieniłem je na x86, ale ten błąd nadal występuje. To jedyne rozwiązanie, jakie znam.

Biblioteki DLL nie są uszkodzone ani nic, ponieważ mogę ich używać z inne programy (do których nie mam źródła). Myślałem, że może to nie jest znalezienie zależności, ale sprawdziłem i są tam wszystkie. Poza tym, czy nie rzuciłoby DllNotFoundException w takim razie?

Co jeszcze mogę zrobić? I zanim powiesz" zamiast tego użyj 64-bitowej niezarządzanej biblioteki DLL", pozwól mi zauważyć, że nie ma takiej. ;)
Author: David Brown, 2010-01-08

15 answers

Jeśli spróbujesz uruchomić 32-bitowe aplikacje na IIS 7 (i/lub 64-bitowej maszynie OS), pojawi się ten sam błąd. Tak więc, z IIS 7, Kliknij prawym przyciskiem myszy pulę aplikacji i przejdź do "Ustawienia zaawansowane" i zmień "Włącz aplikacje 32-bitowe"na " TRUE".

Zrestartuj swoją stronę i powinna działać.

Tutaj wpisz opis obrazka

 489
Author: bluwater2001,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-19 19:52:47

W jakiś sposób pole wyboru Build w menedżerze konfiguracji nie zostało zaznaczone dla mojego pliku wykonywalnego, więc nadal działało ze starą kompilacją procesora. Po tym, jak to naprawiłem, Visual Studio narzekało, że nie może debugować zespołu, ale zostało to naprawione przy ponownym uruchomieniu.

 119
Author: David Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-08 01:59:53

W Visual Studio Kliknij prawym przyciskiem myszy swój projekt -> w lewym okienku kliknij kartę Build ,

Właściwości projektu, zakładka Budowa

Pod Platform Target Wybierz x86 (lub bardziej ogólnie architekturę , aby pasowała do biblioteki, do której linkujesz)

Właściwości projektu, cel platformy

Mam nadzieję, że to komuś pomoże! :)

 60
Author: Marvin Thobejane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-14 07:59:36

Ja też miałem ten problem. Próbowałem wszystkich sugestii tutaj, ale nie pomogły.

Znalazłem inną rzecz, która mnie naprawiła. W Visual Studio kliknij prawym przyciskiem myszy projekt i otwórz "Właściwości". Kliknij na zakładkę "Compile", a następnie kliknij na "Advanced Compile Options" na dole.

Sprawdź rozwijaną listę "procesor docelowy". Powinien pasować do" platformy", którą budujesz. Oznacza to, że jeśli budujesz "dowolny procesor", to "procesor docelowy" powinien powiedzieć "dowolny procesor". Przejdź przez wszystkie platformy, czyniąc je aktywnymi i sprawdź to ustawienie.

 45
Author: Denis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-09 22:00:04

Jeśli napotkasz ten błąd po kliknięciu przycisku zielonej strzałki, aby uruchomić aplikację, ale nadal chcesz uruchomić aplikację w 64 bitach. Możesz to zrobić w VS 2013 lub 2015

Przejdź do: Narzędzia > Opcje > projekty i rozwiązania > projekty internetowe > użyj 64-bitowej wersji IIS Express

 26
Author: paibamboo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-05 13:46:57

Jeśli używasz dowolnego procesora, możesz napotkać ten problem, jeśli zaznaczona jest opcja preferuj 32-bitowe:

Upewnij się, że odznacz tę opcję w zakładce Build projektu!

Tutaj wpisz opis obrazka

 26
Author: Drew Noakes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 14:43:31

Trochę off topic dla tego postu, ale szukanie tego komunikatu o błędzie sprowadziło mnie tutaj.

Jeśli budujesz poprzez system zespołowy i otrzymujesz ten błąd, zakładka proces budowania definicji ma ustawienie "MSBuild Platform". Jeśli jest ustawiona na "Auto", może wystąpić ten problem. Zmiana go na " X86 " może również rozwiązać błąd.

 8
Author: StingyJack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-05 13:55:56

W moim przypadku używałem natywnego DLL w C#. Ta biblioteka zależała od kilku innych bibliotek DLL, których brakowało. Po dodaniu innych bibliotek DLL wszystko działało.

 7
Author: Tomasz Stypich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-11 20:30:25

Zobacz też tę odpowiedź , która rozwiązała ten sam problem dla mnie.

Wysłany przez Luis Mack na 5/12/2010 o 8: 50 AM znalazłem ten sam problem, tylko dla konkretnego projektu podczas kompilacji na maszynie 64-bitowej. Poprawką, która wydaje się działać, jest ręczne zmienianie jednego znaku w strumieniu obrazu za każdym razem, gdy kontrola użytkownika lub formularz jest edytowany w Projektancie

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

Zmień na

 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

To jest 00ljaumc4w powrót do 0yljaumc4w na end of the line (00 back to 0Y)

 3
Author: Shaul Behr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:42

W moim przypadku używam tiny .exe, który przeładowuje odnośne biblioteki DLL poprzez odbicie. Więc po prostu robię te kroki, które ratują mój dzień:

Z właściwości projektu w solution explorer, w zakładce build wybieram target platfrom x86

 2
Author: asdf_enel_hak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-15 09:21:50

W moim przypadku uruchamiałem testy przez MSTest i dowiedziałem się, że wdrażam zarówno 32-bitową, jak i 64-bitową bibliotekę DLL do katalogu testowego. Program faworyzował 64-bitową bibliotekę DLL i powodował jej awarię.

TL; DR Upewnij się, że do testów używasz tylko 32-bitowych bibliotek DLL.

 2
Author: Mike Cluck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-07 19:30:07

Rozwiązałem ten problem w "Windows" sposób. Po sprawdzeniu wszystkich moich ustawień, wyczyszczeniu roztworu i przebudowaniu go, po prostu zamykam roztwór i otwieram go ponownie. Potem zadziałało, więc VS prawdopodobnie nie pozbył się niektórych rzeczy podczas czyszczenia. Kiedy rozwiązania logiczne nie działają, zwykle zwracam się do nielogicznych (lub pozornie nielogicznych). Okna mnie nie zawiodą. :)

 1
Author: user1771386,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-30 09:38:40

Udało mi się rozwiązać ten problem, dopasowując moją wersję kompilacji do wersji.net na serwerze.

Kliknąłem dwukrotnie .exe po prostu zobaczyć, co się stanie i powiedział mi zainstalować 4.5....

Więc obniżyłem do 4.0 i zadziałało!

Więc upewnij się, że Twoje wersje pasują. Działa na moim dev box dobrze, ale serwer miał starszą wersję. NET.

 1
Author: Nateous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-16 21:58:48

W moim przypadku była to Niewłaściwa zawartość pliku. DLL został ściągnięty z sieci, ale zawartość DLL to strona HTML :D Spróbuj sprawdzić, czy jest to plik binarny, czy wydaje się poprawny DLL:)

 1
Author: Ludwo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-22 07:42:11

Bazując na odpowiedzi @paibamboo

Powiedział: przejdź do: Narzędzia > Opcje > projekty i rozwiązania > projekty internetowe > użyj 64-bitowej wersji IIS Express

Mój współpracownik miał to pole zaznaczone( wyraźnie go szukał), ale miał komunikat o błędzie. Po kilku godzinach odznaczył pole i ponownie je sprawdził. I oto: kod teraz działa z sukcesem.

Wydaje siÄ™, Ĺźe sÄ ... dwa miejsca, w ktĂłrych zapisany zostaĹ 'stan tej skrzynki, ktĂłry przestaĹ' siÄ ™ zsynchronizować. Odkręcenie i ponowne sprawdzenie go zsynchronizowało go ponownie.

Pytanie dla bardziej kompetentnych użytkowników: czy była aktualizacja lub coś w zeszłym tygodniu (dla VS 2015), która de-synchronizowała Stany?

 1
Author: MilConDoin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-16 14:42:53