参考 Microsoft.Office.interop.access.dao.dll 导致错误 C#

Posted

技术标签:

【中文标题】参考 Microsoft.Office.interop.access.dao.dll 导致错误 C#【英文标题】:Reference Microsoft.Office.interop.access.dao.dll cause error C# 【发布时间】:2014-06-24 19:28:18 【问题描述】:

我有一个连接到 access 2003 的应用程序。 我在插入大量行以访问时遇到问题,因此我通过使用 DAO (Microsoft.Office.interop.access.dao.dll) 来提高此过程的性能,如下所示链接 Retrieving the COM class factory for component with CLSID XXXX failed due to the following error: 80040154

但是当我通过使用打开连接访问时

使用 DAO =Microsoft.Office.interop.access.dao.dll; ....

新的 DAO.DBEngine();

这行给了我一个错误:

System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID CD7791B9-43FD-42C5-AE42-8DD2811F0419 的组件的 COM 类工厂失败,原因是以下错误:80040154

我的应用程序是 32 位的,我也在一台装有 Win xp 32 位的机器上运行该程序,在我开始使用 DAO 之前它工作正常

我尝试了很多我在 google 时想到的东西,但没有任何帮助,比如: Error in create access database?

-- 更多信息: 安装后

AccessDatabaseEngine.exe 问题消失了,所以我想一定是dll无法注册,然后安装包后,不知何故注册了DAO dll。

但是我不能在生产服务器中安装任何东西,所以我需要一种手动注册 dll 的方法,或者类似的东西,让应用程序在不安装 AccessDatabaseEngine 的情况下工作。 exe

请给我任何建议

【问题讨论】:

【参考方案1】:

解决方法:

可能的解决方法是将项目的平台从“任何 CPU”修改为“X86”(在项目的属性、构建/平台的目标中)

根本原因

VSS 互操作是一个使用 32 位框架的托管程序集,并且 dll 包含一个 32 位 COM 对象。如果你在 64 位环境下运行这个 COM dll,你会得到错误信息。

【讨论】:

没有...阅读...问题? - 声明应用程序是 32 位 (x86),安装 Access 数据库引擎将由所有帐户解决问题,但安装不是一个选项

以上是关于参考 Microsoft.Office.interop.access.dao.dll 导致错误 C#的主要内容,如果未能解决你的问题,请参考以下文章

怎样生成参考文献

LaTeX修改参考文献样式

AForge.NET的参考资料

Proxmox VE 7.2 网卡直通

Proxmox VE 6 更新到 7

参考文献怎么自动编号