2013-05-14 5 views
9

Ich bin gerade von einem 32-Bit-Windows 7-Desktop auf einen 64-Bit-Windows 7-Laptop umgezogen. Wir haben ein C# -Programm, das wir entwickeln, das ungefähr 60 Projekte innerhalb der Lösung enthält. Ich erhalte die folgenden Fehler während versuchen, zu bauen:Ausführen von Oracle Client im 32-Bit-Modus auf einem 64-Bit-Computer

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 

Offensichtlich ist der Fehler ist ziemlich selbsterklärend und ich versuche, meine ganze Lösung laden in 32-Bit-Modus zu gelangen. Ich habe jedes einzelne Projekt durchlaufen und die Zielplattform auf x86 gesetzt, aber ich bekomme immer noch diesen Fehler. Ich habe Google durchsucht und unzählige verschiedene Ansätze gesehen, aber ich kann das Problem nicht beheben. Wie kann ich am besten sicherstellen, dass mein Projekt auf einem 64-Bit-Computer im 32-Bit-Modus ausgeführt wird?

Ich benutze Visual Studio 2008. Ich überlege derzeit, auf 32-Bit herunterzurüsten, aber wirklich vermeiden wollen, dies zu tun.

+0

Es ist nicht klar - erhalten Sie diesen Fehler während des Build-Prozesses, oder wenn Sie die Anwendung ausführen? –

+0

Der Build ist erfolgreich, aber beim Laden der ersten Seite (es handelt sich um eine webbasierte Anwendung) wird dieser Fehler beim Versuch, eine Verbindung zur Oracle-Datenbank herzustellen, ausgegeben. – Joseph

+0

Welchen Oracle-Client verwenden Sie (32-Bit oder 64-Bit)? – Belogix

Antwort

9

Ich habe festgestellt, dass Sie den 32-Bit-Oracle-Client installieren müssen (Sie können download the installer von ihrer Website), auch wenn Sie auf einem 64-Bit-Computer ausgeführt werden.

Darüber hinaus sprachen die Leute während der Diskussionen über den 32-Bit-Modus usw. So können Sie das für eine von IIS 7 gehostete Anwendung überprüfen/festlegen. Sie sollten dies nicht ändern müssen, aber ich habe hier für Vollständigkeit/zukünftige Referenz hinzugefügt.

  • Starten Sie IIS 7 und erweitern Sie den Namen des Servers.
  • Klicken Sie auf Anwendungspools Knoten und finden Sie die Anwendung Pool, den Sie verwenden.
  • Auf der rechten Fenster klicken Erweiterte Einstellungen ...
  • im Pop-up-Fenster, die Aktiviert 32-Bit-Anwendungen Einstellung erscheint überprüfen, die von oben dritte Option ist.
5

Sie müssen Ihre EXE-Hauptdatei so ändern, dass sie nur als 32-Bit-Datei ausgeführt wird. Sie können dies in Visual Studio tun - ändern Sie einfach Platform Ziel von "Any CPU" auf "x86".

Wenn dies nicht möglich ist, verwenden Sie corflags.exe, die eine vorhandene exe zu einer 32-Bit-Anwendung zwingt.

+0

Ich habe kein x86 in der Dropdown-Liste in der Symbolleiste, also denke ich, ich muss corflags.exe verwenden. Von der Seite, mit der Sie mich verlinkt haben, nehme ich an, dass ich "CorFlags.exe assembly/32BIT +" ausführen muss. Was genau ist der Assembly-Wert? Vielen Dank. – Joseph

+0

Assembly - Ihre EXE-Datei. Klicken Sie im Visual Studio auf Ihr Projekt, wählen Sie Eigenschaften. Wählen Sie die Registerkarte Erstellen, und Sie haben Platform target. In dieser Kombination haben Sie Any CPU, x86, x64 –

+0

Ich lese nur in Kommentaren, dass Sie Web-Anwendung verwenden. Sie können dies in IIS festlegen: https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx –

2

Ich habe seit Monaten mit diesem Problem gekämpft und es schließlich gelöst. Ich denke, alle Beiträge sind hilfreich, aber ich hatte ein fehlendes Stück. Ich hatte kein Microsoft ODBC für Oracle-Instanz-Setup für Benutzer-DSN oder System-DSN. Ich arbeite an einem Windows 8-Rechner. Also für mich musste ich zur allgemeinen Windows-Suche gehen und ODBC eingeben und den ODBC-Datenquellen-Administrator (32-Bit) öffnen. Überprüfen Sie, ob auf der Registerkarte Benutzer-DSN oder der Registerkarte System-DSN ein Microsoft ODBC für Oracle-Setup eingerichtet ist. Wenn nicht, klicken Sie auf Hinzufügen und wählen Sie Microsoft ODBC for Oracle. Füllen Sie die Informationen für Ihre Datenquelle aus, die Sie treffen möchten, und klicken Sie auf OK. Stellen Sie sicher, Ihren Computer neu zu starten, und das ist, was schließlich für mich arbeitete. Hoffe, das hilft einigen von euch.

0

In meinem Fall wurde 64-Bit-Oracle-Client auf meinem Computer installiert, aber immer noch denselben Fehler. Also, ich habe analysiert, dass in meiner Anwendung gehen Sie auf Anwendung mit der rechten Maustaste gehen Sie zu -> Eigenschaften -> Registerkarte Web und deaktivieren Sie die Option "IIS Express verwenden", wenn Sie lokale IIS-Webserver verwenden. Problem wurde gelöst.

Verwandte Themen