Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере.

Я установил «Распространяемый компонент Microsoft Access Database Engine 2010», как описано в записи блога.

http://danielcai.blogspot.com/2011/02/solution-run-jet-database-engine-on-64.html

и это работает в моем приложении windows-forms. Теперь я хочу добавить несколько модульных тестов, и при запуске модульного теста я получаю указанную выше ошибку. Я проверил свои ссылки, но не могу понять, почему это работает в приложении, а не в модульном тесте.

Я работаю в VS2010 над установкой Windows 7 Ultimate x64.

Может кто-нибудь, пожалуйста, помогите мне?


person Jurjen    schedule 08.06.2011    source источник
comment
Возможно ли, что ваш модульный тестовый проект скомпилирован с другой разрядностью (32 или 64), чем ваш проект приложения?   -  person Heinzi    schedule 09.06.2011
comment
Да, распространяемого для 64-битной версии нет.   -  person Hans Passant    schedule 11.06.2011
comment
Вы поняли это?   -  person Haukman    schedule 18.06.2011
comment
Веб-сайт загрузки от Microsoft содержит ошибку копирования и вставки из Access 2007 (microsoft. com/en-us/download/details.aspx?id=13255). Поставщик для 2007 г. (доступна только 32-разрядная версия): Microsoft.ACE.OLEDB.12.0» Поставщик для 2010 г. (32/64-разрядная версия): Microsoft.ACE.OLEDB.14.0»   -  person Bernhard    schedule 27.08.2015
comment
бо, я ошибся - провайдер всегда Microsoft.ACE.OLEDB.12.0 », независимо от того, используете ли вы Office 2007/2010/2013.   -  person Bernhard    schedule 27.08.2015


Ответы (1)


Целевая платформа, вероятно, настроена на любой процессор, что означает, что когда вы запускаете ее из VS или в 64-битной Windows, она будет выполняться как 64-битный код (и использовать 64-битный драйвер Jet). Но типичный модуль запуска тестов выполняется в 32-битном режиме, и все загружаемые им сборки будут затем выполняться в 32-битном режиме (поскольку целевая платформа вашего проекта — Any, т. е. либо 32-битная, либо 64-битная). И Windows 7 не поставляется с 32-битным драйвером Jet по умолчанию.

person Haukman    schedule 11.06.2011
comment
На самом деле целью по умолчанию для VS2010 является x86. Но да, конечно, причина проблемы. - person Hans Passant; 11.06.2011
comment
Вы правы, в VS2008 по умолчанию использовался Any. Но его все еще можно установить на любой (возможно, импортированный из более ранней версии VS) - person Haukman; 11.06.2011