@iluxa1810

C# вылетает ошибка при работе с Interop. Что делать?

На целевой машине нет Access нужной версии(стоит 2010) и я поставил туда Access 2016 Runtime.

При попытке выполнить программу получаю такую ошибку:

System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9} failed due to the following error: 80080005 Ошибка при выполнении приложения-сервера (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at .Clasess.AccessProvider..ctor(String pathToDatabase) in ...
Подскажите, с чем может быть связана такая ошибка?

Использую либы версии 15.0.0.0.

Ошибка возникает в методе, который создает объект Application и пытается открыть БД Access...
Access 2016 Runtime не достаточно для создания объекта?

Подскажите, что с этим делать? Работать через Oledb не предлагать.
  • Вопрос задан
  • 1012 просмотров
Пригласить эксперта
Ответы на вопрос 2
Очевидно, надо установить Access нужной версии, такой же как рантайм
Ответ написан
Комментировать
@spencode
Если используется функциональность, которая присутствует в Access 2016 и в Access 2010, то можно написать ручками (без референсов) загрузку библиотеки Access через тот же System.Activator.CreateInstance с использованием Dynamic (я подозревая, что ваша версия .NET это уже поддерживает). На тостере есть пример, правда там используется Excel.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы