Можем ли мы добавить ссылку на Microsoft.ACE.Oledb.12.0.dll в проект?

Я получаю сообщение об ошибке «Поставщик Microsoft.ACE.OLEDB.12.0 не зарегистрирован на локальном компьютере». на моих тестовых серверах. Итак, мой вопрос:

i) Могу ли я добавить ссылку на «Microsoft.ACE.Oledb.12.0.dll», чтобы спроецировать его самостоятельно? ii) Это безопасно? iii) Как это сделать?

Все работает на моем локальном компьютере, так как на моем компьютере установлена ​​последняя версия офиса. Как только я развертываю свой код на тестовых серверах, я получаю ошибку выше. Возможно, мне не удастся установить Office на тестовых серверах (по какой-то причине). Так можно ли поместить всю необходимую dll в сам проект и развернуть ее на тестовых серверах?

Заранее спасибо.


person Avinash    schedule 22.08.2013    source источник
comment
Я знаю, что прошло некоторое время с тех пор, как вы задали этот вопрос, но я столкнулся с той же проблемой, и мне нужно знать, есть ли способ добавить эту dll в веб-приложение asp. Спасибо за любую помощь.   -  person Hanady    schedule 17.03.2015


Ответы (4)


Чтобы использовать Microsoft.ACE.OLEDB.12, вам необходимо установить «Распространяемый компонент Microsoft Access Database Engine 2010».

Информационная страница для этого находится здесь: http://www.microsoft.com/en-us/download/details.aspx?id=13255

И, как совершенно справедливо заметил @ user1297578, фактическая загрузка находится здесь: http://www.microsoft.com/en-in/download/confirmation.aspx?id=13255

После того, как вы установили это, фактическая сборка называется ACEOLEDB.DLL, следующая команда в командной строке найдет ее для вас в вашей системе:

C:\>DIR /s/b c:\ACEOLEDB.DLL
c:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL

Для справки, следующее сообщение об ошибке, которое я получал от программы, пока я не установил вышеуказанный распространяемый пакет:

Connection Failed. 
Error from IDataInitialize::GetDataSource
with connectionString=Data Source=C:\MyFileName.mdb;Mode=Share Deny Write;Provider=Microsoft.ACE.OLEDB.12.0;User Id=admin
OLE DB Error Report:
    ErrorRecord:
    Hresult=80040154
    Description: Class not registered
    SQLErrorInfo: No error info available
    Source: Microsoft OLE DB Service Components
person Don Vince    schedule 30.03.2014
comment
Если кто-нибудь ответит, как использовать эту библиотеку только с * .DLL в проекте, это будет здорово. - person Wagner Leonardi; 26.08.2014

Если вы хотите использовать AccessDatabaseEngine 64 и 64-разрядную версию IIS (например, 64-разрядную версию Windows 2012), выполните следующие действия.

  1. Вы должны добавить роль asp.net 4.0, .net 4.0 в IIS

  2. Откройте диспетчер IIS

  3. Откройте расширенную настройку пула приложений вашего сайта

  4. Включите 32-битные приложения, для которых установлено значение False (необходимо сделать это, или iis установлен на 32-битный движок)

  5. если ваш сайт использует .net 4.0, тогда версия .NET Framework установлена ​​точно на версию

6. [это ключевой момент !!!] Для управляемого режима конвейера установлено значение "Классический"

удачи :)

person user3321978    schedule 18.02.2014

Вы можете обойти свою проблему, добавив Microsoft Access Database Engine 2010 в качестве предварительных условий в проект установки. Следующая ссылка показывает вам, как это сделать, но будьте осторожны, если вы используете VS2017, тогда путь другой, путь для VS2017:

"C: \ Program Files (x86) \ Microsoft SDK \ ClickOnce Bootstrapper \ Packages"

нет

"C: \ Program Files \ Microsoft SDK \ Windows \ v7.0A \ Bootstrapper \ Packages"

Также я заметил, что в некоторых случаях вам нужно установить «AccessDatabaseEngine.exe», а не «AccessDatabaseEngine_X64.exe» на пользовательском компьютере, даже если это 64-битная Windows !!!

Вот статья, включающая видео, показывающее, как все это сделать шаг за шагом:

https://csharp-tutorials1.blogspot.com/2017/12/add-microsoft-access-engine-2010-as.html

С наилучшими пожеланиями

person Haider Abbas    schedule 15.08.2019

Чтобы использовать эту библиотеку, вам необходимо установить Office на компьютер. Если он есть, вы можете просто добавить lib обычным способом.

person Krzysztof Madej    schedule 22.08.2013
comment
да я согласен с вами. Все работает на моем локальном компьютере, так как на моем компьютере установлена ​​последняя версия офиса. Как только я развертываю свой код на тестовых серверах, я получаю ошибку выше. Возможно, мне не удастся установить Office на тестовых серверах (по какой-то причине). Так можно ли поместить всю необходимую dll в сам проект и развернуть ее на тестовых серверах? - person Avinash; 22.08.2013
comment
Вы можете найти темы, связанные с вашей проблемой: - Microsoft.ACE. Поставщик OLEDB.12.0 не зарегистрирован Вы можете установить провайдер OLEDB вместо офиса - Нужно ли нам устанавливать Microsoft Office на сервере для импорта Excel в Asp.net? Вы можете установить автономную версию поставщик OLEDB - person Krzysztof Madej; 22.08.2013