У меня 64-битная система Windows и приложение C #, которое использует OleDbConnection для чтения данных Excel через 32-битную версию AccessDatabaseEngine.exe COMponents, поскольку у меня установлен 32-битный Office (как рекомендовано MSFT), а 64-битная версия AccessDatabaseEngine не будет работать с 32-битным Office.
Чтобы мое приложение C # работало, мне пришлось установить «Prefer 32-bit» в настройках сборки проекта. Это устанавливает флаг anycpu32bitpreferred для компилятора / платформы. На платформах Intel нет никаких «предпочтений» по этому поводу.
Так что все работает нормально. На моей машине. Не на 64-битной машине моего начальника, на которой он установил 64-битный Office.
Я не могу найти ни одной опции app.config для принудительного использования 64-битной версии. Есть один? Теоретически возможно ли такое в последовательности загрузки .NET?
В MSFT об этом не думали. Каким-то образом я смогу создать приложение, которое будет работать как с 32-разрядной, так и с 64-разрядной версиями Office. Можно как-нибудь использовать OleDbConnection?
Я знаю о флаге CorFlags.exe / 32bitpref-, но для этого требуется поддержка двух версий двоичного файла.
Любые идеи? Исправления? Параметры App.Config?