- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我是 Microsft.ACE.OLEDB 12.0 的初学者。我创建了一个 Winforms 应用程序 VS 2010。
并创建一个将数据网格数据导出到 MS Access 文件的功能。我使用 Microsoft Oledb
用于将数据网格数据导出到 MS Access 文件。但是当我尝试导出时出现此错误
数据到 ms Access 。
请看下图。
我还在我的应用程序中引用了 Microsoft.Office 12.0 对象库。
批量构建配置
最佳答案
对 Access Interop
位的引用与您的异常无关,Access Interop 不是使用 System.Data.OleDb
中的类所必需的。
当您为 AnyCPU Platform
编译应用程序时会出现问题,您在 64 位系统上运行并且安装的 ADO.NET 提供程序 (Microsoft ACE.OLEDB.12.0) 是 32 位版本。
当使用 AnyCpu
目标平台时,您的代码将在 64 位系统上作为 64 位代码执行,在 32 位系统上作为 32 位代码执行。以 64 位执行的应用程序不能使用 32 位驱动程序(反之亦然)。现在添加 Microsoft.ACE.OLEDB.12.0 有两个不同版本的事实。一个用于 64 位,一个用于 32 位,它们不能安装在同一台机器上。
最简单的解决方法是通过 Visual Studio 菜单更改应用程序的目标平台
BUILD -> Configuration Manager -> Active Solution Platform -> x86
如果x86
选项不存在,那么选择NEW,将其命名为x86
,Copy Settings from AnyCPU
并勾选创建新的项目平台
如果您认为在 64 位操作系统上使用 32 位应用程序会降低性能或需要避免,请三思并阅读 this reference AnyCpu 的 PRO 和 CONS 受到严格审查。如果您没有使用 AnyCpu
的特定原因,最好继续使用 x86
。
当然,另一种选择是卸载 32 位版本并安装 64 位版本的 ACE from here然后在 64 位系统上将您的应用程序作为 AnyCpu 运行。但这对于您的部署场景来说可能是一场噩梦。如果您的 x64 目标计算机上安装了 Microsoft Office 32 位版本怎么办? Office 安装其位兼容版本的 ACE,如前所述,不可能在同一台机器上安装 32 位和 64 位的 ACE。
现在您还应该要求您的客户将 Office 重新安装为 64 位,以使您的 64 位应用程序满意。
关于c# - 数据导出到 MS ACCESS 时, 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17716207/
我是一名优秀的程序员,十分优秀!