Der Verweis auf die Access Interop
Bits hat nichts mit Ihrer Ausnahme zu tun, und Access Interop ist nicht notwendig, um die Klassen in System.Data.OleDb
zu verwenden.
Das Problem tritt auf, wenn Sie Ihre Anwendung für AnyCPU Platform
kompiliert haben, Sie auf einem 64-Bit-System ausgeführt werden und der installierte ADO.NET-Anbieter (Microsoft ACE.OLEDB.12.0) ist die 32-Bit-Version.
Bei Verwendung der Zielplattform AnyCpu
wird Ihr Code als 64-Bit-Code auf 64-Bit-Systemen und als 32-Bit-Code auf 32-Bit-Systemen ausgeführt. Eine Anwendung, die als 64bit ausgeführt wird, kann keine 32-Bit-Treiber (und umgekehrt) verwenden. Fügen Sie dem Mix jetzt die Tatsache hinzu, dass Microsoft.ACE.OLEDB.12.0 zwei verschiedene Versionen hat. Eine für 64bit und eine für 32bit und sie können nicht zusammen auf der gleichen Maschine installiert werden.
Die einfachste Abhilfe ist, die Zielplattform Ihrer Anwendung über Visual Studio-Menü
BUILD -> Configuration Manager -> Active Solution Platform -> x86
zu ändern, wenn die x86
Option nicht bereits vorhanden ist, dann NEW wählen, Name es x86
, Copy Settings from AnyCPU
und überprüft Create new project platforms
Wenn Sie denken, dass die Verwendung einer 32bit App auf einem 64bit Betriebssystem ein Leistungsverlust oder etwas zu vermeiden ist, dann denken Sie zweimal nach und lesen Sie this reference wo die PRO und CONS von AnyCpu kritisch untersucht werden. Wenn Sie keinen bestimmten Grund haben, AnyCpu
zu verwenden, ist es besser, mit x86
zu bleiben.
Natürlich ist eine weitere Option, die 32-Bit-Version zu deinstallieren und installieren Sie die 64-Bit-Version von ACE from here und dann führen Sie Ihre Anwendung als AnyCpu auf 64-Bit-Systemen. Dies könnte jedoch ein Albtraum für Ihre Bereitstellungsszenarien sein. Was ist, wenn die Microsoft Office 32-Bit-Version auf Ihrem x64-Zielcomputer installiert ist?Office installiert seine bitkompatible Version von ACE, und wie gesagt, ist es nicht möglich, 32-Bit- und 64-Bit-ACE auf derselben Maschine zu installieren.
Jetzt sollten Sie Ihren Kunden auch bitten, Office als 64-Bit neu zu installieren, um Ihre 64-Bit-App weiterhin zu nutzen.
UPDATE
Die Situation hat sich ein wenig mit den neuesten Versionen von Visual Studio geändert. Es gibt jetzt eine neue Option, die standardmäßig für neue Projekte verwendet wird. Es heißt
AnyCPU Prefer 32bit Modus. Weitere Informationen unter diesem Link:
What AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11 und ein weiterer interessanter Beitrag (wenngleich in Bezug auf Sql Server Compact) ist dieser
Vielen Dank für Ihre wertvolle Antwort. Mein Betriebssystem ist Windows 7 64 Bit.Bitte sehen Sie meine bearbeitete Frage Ich füge ein Bild in der Batch-Build-Konfiguration –
No Batch Build, verwenden Sie Configuration Manager und setzen Sie die aktive Lösung Plattform als x86 – Steve
Aber es funktioniert in beiden Plattform ich meine, gibt es eine Chance, 32 Bit und 64 zu verwenden Bit OS. –