0

我有 .net 4.0 WPF 应用程序。我的活动解决方案平台是“任何 CPU”,我在 64 位 Windows 7 系统上运行。我使用过 Sqlite。它在我的系统上运行良好。但是当我将我的应用程序安装到其他一些机器,我收到一个错误“尝试加载格式不正确的程序。(HRESULT 异常:0x8007000B)”。我尝试为 x86 和 x64 编译,我得到了同样的错误。任何想法可能是什么问题?

4

1 回答 1

0

如http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站所报告

如果开发机器和客户机器可能具有不同的处理器架构,则可能需要多个二进制包。对于这种情况,强烈建议使用本机库预加载功能。它从 1.0.80.0 版本开始可用,并默认启用。为了利用此功能,必须将单独的托管程序集和互操作程序集与 XCOPY 部署一起使用(即混合模式程序集不支持此功能,也不支持将程序集部署到全局程序集缓存),从而导致一个看起来像这样的应用程序部署:

  • \App.exe(可选的,仅限托管的应用程序可执行程序集)
  • \App.dll(可选的,仅限托管的应用程序库程序集)
  • \System.Data.SQLite.dll(必需的,仅托管的核心程序集)
  • \System.Data.SQLite.Linq.dll(可选,仅限托管的 LINQ 程序集)
  • \System.Data.SQLite.EF6.dll(可选,仅限托管的 EF6 程序集)
  • \x86\SQLite.Interop.dll(必需,x86 本机互操作程序集)
  • \x64\SQLite.Interop.dll(必需,x64 本机互操作程序集)

上面的字符串 "" 表示应用程序二进制文件要在目标机器上部署的目录。启用本机库预加载功能和上面显示的应用程序部署后,System.Data.SQLite 仅托管程序集将尝试自动检测当前进程的处理器架构并预加载适当的本机库。

于 2014-02-26T15:40:56.000 回答