2013-02-04 14 views
5

Mam system Windows 64bit i aplikację C#, która używa OleDbConnection do odczytu danych Excela za pośrednictwem 32-bitowej wersji AccessDatabaseEngine.exe COMponents, ponieważ mam zainstalowany 32-bit Office (zgodnie z zaleceniami MSFT), a 64-bitowa wersja AccessDatabaseEngine nie działa z 32-bitowym pakietem Office.W jaki sposób aplikacja .NET może działać z 32-bitowym i 64-bitowym pakietem Office?

Aby moja aplikacja C# działała, musiałem ustawić "Preferuj 32-bitowe" w ustawieniach budowania projektu. Spowoduje to ustawienie flagi anycpu32bitpreferred dla kompilatora/platformy. Nie ma "preferowanych" na ten temat na platformach Intela.

Wszystko działa dobrze. Na mojej maszynie. Nie na 64-bitowej maszynie mojego szefa, w której zainstalował 64-bitowy pakiet Office.

Nie mogę znaleźć żadnej opcji app.config, aby wymusić 64bit. Czy jest jeden? Czy teoretycznie jest możliwe, że w sekwencji ładowania .NET może istnieć jedna?

MSFT nie przemyślał tego. Powinienem jakoś zbudować aplikację, która będzie działać zarówno w 32-, jak i 64-bitowych wersjach pakietu Office. Czy w jakiś sposób mogę użyć OleDbConnection?

Wiem o pliku CorFlags.exe/32bitpref-, ale wymaga to zachowania dwóch wersji pliku binarnego.

Wszelkie pomysły? Naprawione? Opcje App.Config?

Odpowiedz

0

Można używać ODBC do komunikowania się z programem Excel zamiast z obiektem COM AccessDatabaseEngine. Pominąłoby to problem 32/64 bitowy.

+0

Dzięki, ale nie chcą korzystać z technologii ODBC. – Dave

3

Należy pobrać the 64 bit version sterownika ODBC (mówi on o dostępie, ale ma też sterownik excel).

Najprawdopodobniej pojawia się błąd mówiąc, że nie można mieć zarówno 32 bit i 64 bit zainstalowany w tym samym czasie, aby obejść ten problem musisz use the /passive flag

Aby zainstalować Microsoft ACE OLEDB Provider 32-bit na komputerze z systemem Office 2010. 64-bitowe:

  • AccessDatabaseEngine.exe/passive

Aby zainstalować Microsoft ACE OLEDB Provider 64-bit na komputerze z systemem Office 2010 32-bitowy:

  • AccessDatabaseEngine_X64.exe/passive
+1

Zobacz tutaj słynną sztuczkę "/ passive", aby zainstalować sterowniki 32-bit * i * 64-bitowe na tej samej maszynie: http://blog.codefluententities.com/2011/01/20/microsoft-access-database -engine-2010-redistributable/ –

+0

Oh WOW! Chciałbym wiedzieć, że rok temu, kiedy próbowałem dowiedzieć się, jak uzyskać 32-bitowe z 64-bitowym biurem. Dzięki, zaktualizowałem swoją odpowiedź ze szczegółami z tej strony. –

+0

Przepraszam za spóźnioną odpowiedź, nie otrzymałem żadnych notyfikacji. Czy jeśli dodaję sterownik 64-bitowy, będzie on rozmawiał z 32-bitową wersją pakietu Office? Inaczej to nie pomoże. Dzięki, Dave – Dave