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



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

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

自从我的机器上安装了最新版本的office以来,所有的东西都在我的本地机器上工作。一旦我把我的代码部署到测试服务器上,我就克服了错误。我可能无法在测试服务器上安装Office(由于某些原因)。所以,是否可以将所有必需的dll放入项目本身,并将其部署到测试服务器上?

提前谢谢。

要使用"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 FilesCommon FilesMicrosoft SharedOFFICE14ACEOLEDB.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

您可以通过在安装项目中添加Microsoft Access Database Engine 2010作为先决条件来解决您的问题,下面的链接向您展示了如何做到这一点,但要小心,如果您使用VS2017,则路径不同,VS2017的路径为:

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

不是

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

我还注意到,在某些情况下,您必须在用户的计算机上安装"AccessDatabaseEngine.exe",而不是"AccessDatabaseEngine X64.exe",即使它是64位窗口!!!

这篇文章包括一段视频,展示了如何一步一步地完成这一切:

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

向致以最良好的问候

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

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

  2. 打开IIS管理器

  3. 打开您网站的应用程序池的建议设置

  4. 启用设置为False的32位应用程序(必须这样做,或者不设置为32位引擎)

  5. 如果您的网站使用.net 4.0,则.net Framework版本设置为版本

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

祝你好运:)

相关内容

  • 没有找到相关文章

最新更新