构建x86和'任何CPU'

时间:2010-10-29 21:22:12

标签: c# visual-studio-2008 build oledb

我正在尝试使用Microsoft.Jet.OLEDB驱动程序从我的C#应用​​程序连接到访问数据库。当我尝试打开连接时,出现错误:“'Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册。”这是因为驱动程序仅在32位计算机上受支持。

我的解决方案是将引用它的项目的平台目标更改为x86。如果我尝试将所有项目更改为x86,我会遇到主要的构建问题,所以我将它们全部留在“任何CPU”上

现在问题是当我在VS中启动时,它告诉我:“无法加载文件或程序集'MyProject,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其中一个依赖项。尝试是用于加载格式不正确的程序。“

我已经尝试了我能想到的每一种配置,而我却无法让它发挥作用。有什么提示吗?

2 个答案:

答案 0 :(得分:7)

你必须将整个事情切换到x86。如您所见,没有用于Access的x64驱动程序。

您的其他代码,如果编译为x64,则无法使用x86程序集。您可能需要查看此问题:Can an x64 application use x86 assemblies - and vice versa?

更新

有趣的是,我从MS找到了Access Database Engine x64。您可能会尝试抓住它,看看它是否适合您。您也可以在MSDN上查看this discussion

答案 1 :(得分:3)

您必须切换到32位才能使用Jet。 (编辑:除非您使用新的驱动程序,否则其他几个海报都已引用)。

如果您的任何一个项目正在使用图像列表,则在从64位切换到32位时会出现错误。我记得你要么必须从头开始重建图像列表,要么删除它们并使用别的东西。

您可以找到更多信息herehere