我们可以将“Microsoft.ACE.Oledb.12.0.dll”的引用添加到项目中吗

Posted

技术标签:

【中文标题】我们可以将“Microsoft.ACE.Oledb.12.0.dll”的引用添加到项目中吗【英文标题】:Can we add Reference of 'Microsoft.ACE.Oledb.12.0.dll' to project 【发布时间】:2013-08-22 12:26:25 【问题描述】:

我收到错误消息“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。”在我的测试服务器上。所以我的问题是:

i) 我可以添加对“'Microsoft.ACE.Oledb.12.0.dll'”的引用以自行投影吗? ii) 安全吗? iii) 如何做到这一点?

一切都在我的本地机器上运行,因为我的机器上安装了最新版本的 office。一旦我将代码部署到测试服务器,我就会遇到错误。我可能无法在测试服务器上安装 Office(由于某种原因)。那么是否可以将所有需要的 dll 放入项目本身并将其部署到测试服务器?

提前致谢。

【问题讨论】:

我知道你问这个问题已经有一段时间了,但我面临同样的问题,我需要知道是否有办法将此 dll 添加到 asp web 应用程序。感谢您的帮助。 【参考方案1】:

要使用“Microsoft.ACE.OLEDB.12”,您需要安装“Microsoft Access Database Engine 2010 Redistributable”

相关信息页面在这里: 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

【讨论】:

如果有人回复如何在项目中仅使用 *.DLL 使用这个库,那就太棒了。【参考方案2】:

您可以通过在安装项目中添加 Microsoft Access Database Engine 2010 作为先决条件来解决您的问题,以下链接向您展示了如何执行此操作,但请注意,如果您使用 VS2017 则路径不同,VS2017 的路径是:

“C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages”

不是

“C:\Program Files\Microsoft SDKs\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

最好的问候

【讨论】:

【参考方案3】:

如果您想使用 AccessDatabaseEngine 64 和 IIS 64 位(例如 windows 2012 64 位),请关注

    您必须在 IIS 上添加角色 asp.net 4.0、.net 4.0

    打开 IIS 管理器

    打开您网站的应用程序池的高级设置

    启用 32 位应用程序设置为 False(必须这样做,否则 iis 未设置为 32 位引擎)

    如果您的站点使用 .net 4.0,则 .NET Framework 版本设置为完全一致的版本

6. [这是关键点!!!] 托管管道模式设置为“经典”

祝你好运:)

【讨论】:

以上是关于我们可以将“Microsoft.ACE.Oledb.12.0.dll”的引用添加到项目中吗的主要内容,如果未能解决你的问题,请参考以下文章

microsoft.ace.oledb.12.0 提供程序未注册

Microsoft.ACE.OLEDB.12.0 尚未注册”错误

如何使用 Office 64 位安装 Microsoft.Ace.oledb 32 位?

“Microsoft.ACE.OLEDB.12.0”尚未注册

Microsoft.Jet.OLEDB.4.0 与 Microsoft.ACE.OLEDB.12.0,我应该使用哪个?

Microsoft.ACE.OLEDB.12.0 错误