c# - DLL 加载时出现 BadImageFormatException 且 Provider 未在本地计算机上注册问题

标签 c# .net visual-studio-2010

我正在运行 .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/

相关文章:

c# - 用户输入无效后程序结束

c# - 如何强制文档 <see/> 元素引用类型而不是同名属性?

.net - 从.NET代码中删除未使用的局部变量

c# - 使用 MultipartFormDataStreamProvider 和 ReadAsMultipartAsync

c# - 将项目添加到默认的 TextBox 上下文菜单

c# - 启用 bool 值并在 View 中输入文本,然后传回 Controller - MVC

c# - 为什么我在安装 VS2012/.Net 4.5 后在 .Net 4.0 Assembly.GetCustomAttributes 上出现 ExecutionEngineException?

c# - 如何跨类使用TraceSource

visual-studio-2010 - 找出谁在 VS 2010 中使用 TFS 进行了更改

visual-studio - 防止 Visual Studio 尝试在 PDF 文件中作为二进制数据进行搜索