我的电脑同时安装了带有Access 2016的64位Office和安装了32位Access 2010的可再发行组件。提供者Microsoft.ACE.OLEDB.12.0未在64位模式下运行,但是Access 64bit在那里
我的VB.NET程序使用OleDb类来读写存储在.accdb文件中的数据。
如果我使用AnyCPU选项对其进行编译,它将暂停并显示“Microsoft.ACE.OLEDB.12.0提供程序未注册”的异常,除非我设置了“prefer 32 bit”选项。
但后来我的整个应用程序将不会从64位处理中获益,这将运行32位(IntPtr.Size = 4
)
这是为什么? .NET OleDb类不应该找到Access 2016 64位附带的64位提供程序?
我会感谢任何人帮助我理解这里发生的事情,希望能指导我解决这个问题。
谢谢你@Heinzi,你钉了它。我的Office版本是点击运行的版本,我不知道这个问题。现在,我会尝试你的第一个建议。不过,我会考虑在将来换用SQLite。非常感谢你! – VBobCat
@VBobCat:如果您不需要Access Runtime,您也可以[只下载驱动程序本身](https://www.microsoft.com/en-us/download/details.aspx?id=13255)。 – Heinzi
反馈:摆脱32位访问运行时并安装64位版本的Access 2013运行时可以正常工作。再次感谢,@ Heinzi! – VBobCat