3 Stimmen

Bauen für x86 und 'Any CPU'

Ich versuche, den Microsoft.Jet.OLEDB-Treiber zu verwenden, um eine Verbindung zu einer Access-Datenbank von meiner C#-Anwendung herzustellen. Wenn ich versuche, eine Verbindung zu öffnen, erhalte ich einen Fehler: "Der Anbieter 'Microsoft.Jet.OLEDB.4.0' ist auf dem lokalen Rechner nicht registriert." Dies liegt daran, dass der Treiber nur auf 32-Bit-Maschinen unterstützt wird.

Meine Lösung bestand darin, das Plattformziel des Projekts, das darauf verweist, auf x86 zu ändern. Wenn ich versuche, alle meine Projekte auf x86 zu ändern, erhalte ich größere Build-Probleme, also lasse ich sie alle auf "Any CPU".

Das Problem jetzt ist, wenn ich in VS starte, zeigt es mir an: "Die Datei oder Assembly 'MeinProjekt, Version=1.0.0.0, Kultur=neutral, PublicKeyToken=null' oder eine seiner Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem ungültigen Format zu laden."

Ich habe so ziemlich jede Konfiguration ausprobiert, an die ich denken kann, und ich kann es einfach nicht zum Laufen bringen. Irgendwelche Tipps?

7voto

NotMe Punkte 86089

Sie müssen das gesamte auf x86 umstellen. Wie Sie festgestellt haben, gibt es keinen x64-Treiber für Access.

Ihr anderer Code kann, wenn er x64 kompiliert ist, keine x86-Assemblys verwenden. Möglicherweise möchten Sie diese Frage überprüfen: Kann eine x64-Anwendung x86-Assemblys verwenden - und vice versa?

UPDATE

Interessanterweise habe ich das Access Database Engine x64 von MS gefunden. Sie könnten versuchen, das zu bekommen und sehen, ob es für Sie funktioniert. Sie könnten auch diese Diskussion auf MSDN überprüfen.

3voto

Jon B Punkte 49459

Sie müssen auf 32-Bit umschalten, um Jet zu verwenden. (Bearbeitung: es sei denn, Sie verwenden den neuen Treiber, auf den ein paar andere Poster verwiesen haben).

Wenn eines Ihrer Projekte Bildlisten verwendet, gibt es einen Fehler, der Fehler verursacht, wenn Sie von 64-Bit auf 32-Bit umschalten. Soweit ich mich erinnere, müssen Sie entweder die Bildlisten von Grund auf neu erstellen oder sie verwerfen und stattdessen etwas anderes verwenden.

Sie finden weitere Informationen hier und hier.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X