我正在运行 .NET 4.0 应用程序,Access Windows 7 x64 位操作系统 + Office 2010(64 位兼容提供程序 Microsoft.ACE.OLEDB.12.0)上的数据库。
平台目标 x86:
提供商问题:
“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册
平台目标x64或任何CPU:
DLL 文件问题:
System.BadImageFormatException:无法加载文件或程序集“Interop.SHDocVw,Version=1.1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。尝试加载格式不正确的程序。
最佳答案
您可以通过安装 32 位版本的提供程序来解决第一个问题。下载is here .
第二个问题非常很奇怪,互操作库应该只包含IL,而不依赖于处理器架构。当我从 c:\windows\system32\shdocvw.dll 创建互操作 DLL 并在其上运行 CorFlags.exe 时,我得到以下信息:
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 1
ILONLY : 1
32BIT : 0
Signed : 0
注意 ILONLY 是如何打开的,32BIT 是如何关闭的。这应该可以在 64 位机器上运行。我现在还没有接近一个来检查,请自己尝试比较。为了获得更好的答案,您应该记录您安装的 Internet Explorer 版本以及您是否使用 64 位版本或 32 位版本的 DLL 来生成互操作。后者位于 c:\windows\syswow64 目录中。
关于c# - DLL 加载时出现 BadImageFormatException 且 Provider 未在本地计算机上注册问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655652/