“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册

6

我已经按照博客文章中的描述安装了“Microsoft Access Database Engine 2010 Redistributable”。

http://danielcai.blogspot.com/2011/02/solution-run-jet-database-engine-on-64.html

在我的Windows窗体应用程序中它有效。现在我想添加一些单元测试,但运行单元测试时出现上述错误。我已经检查了我的引用,但似乎无法弄清为什么它在应用程序中有效而在单元测试中无效。
我正在Windows 7 Ultimate x64安装的VS2010中工作。
有人可以帮帮我吗?

2
你的单元测试项目是否可能编译成与应用程序项目不同的位数(32位或64位)? - Heinzi
是的,没有可分发的64位版本可用。 - Hans Passant
你解决了吗? - Haukman
微软的下载网站是从Access 2007复制粘贴错误而来的(http://www.microsoft.com/en-us/download/details.aspx?id=13255)。2007年的提供程序(仅32位可用)为“Microsoft.ACE.OLEDB.12.0”。 2010年的提供程序(32/64位)为“Microsoft.ACE.OLEDB.14.0”。 - Bernhard
我错了 - 无论您使用的是Office 2007/2010/2013,提供程序始终是“Microsoft.ACE.OLEDB.12.0”。 - Bernhard
1个回答

2

目标平台可能被设置为任意CPU,这意味着当您在VS中运行它或在64位Windows中运行它时,它将作为64位代码执行(并使用64位Jet驱动程序)。但是,典型的单元测试运行器在32位模式下执行,它加载的所有程序集都将在32位模式下执行(因为您的项目目标平台是任意的,即32位或64位)。而且,Windows 7默认不带有32位Jet驱动程序。


默认的目标平台是x86,这很可能是问题的原因。 - Hans Passant
你是正确的,它在VS2008中曾经是默认的Any。但它仍然可以设置为Any(可能是从早期的VS导入)。 - Haukman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接