C# Windows Mobile的MissingMethodException(找不到PInvoke DLL';sqlceme30.DLL';)

C# Windows Mobile的MissingMethodException(找不到PInvoke DLL';sqlceme30.DLL';),c#,sqlite,compact-framework,sql-server-ce,C#,Sqlite,Compact Framework,Sql Server Ce,我已经开发了一个win mobile(v5.0)应用程序,我只使用了1个数据库SQLITE,其中包含以下参考: System.Data.SQLite.dll(组件版本和产品版本:1.0.65.0) SqL.Inop.065.DLL(产品版本:1,是第一DLL的C++ LIB)。 使用此应用程序5周后,我今天收到一个奇怪的异常,我不明白它是什么? 例外情况是: MissingMethodException Can`t find PInvoke DLL 'sqlceme30.dll '

我已经开发了一个win mobile(v5.0)应用程序,我只使用了1个数据库SQLITE,其中包含以下参考:

  • System.Data.SQLite.dll(组件版本和产品版本:1.0.65.0)
  • SqL.Inop.065.DLL(产品版本:1,是第一DLL的C++ LIB)。
使用此应用程序5周后,我今天收到一个奇怪的异常,我不明白它是什么? 例外情况是:

MissingMethodException  
Can`t find PInvoke DLL 'sqlceme30.dll '

at

System.Data.SqlServerCe.SqlCeCommand.ReleaseNativeInterfaces()
at
System.Data.SqlServerCe.SqlCeCommand.Dispose(Boolean disposing)
......
怎么了? 有谁知道这件事,请给我解释一下


顺便说一句:到目前为止,我使用这些引用删除了3-4个应用程序(1年前),一切正常。

可能是“sqlceme30.dll”丢失,或者可能是虚拟内存不足,无法加载dll。首先尝试使用模拟器和/或关闭一些应用程序。

查看您的代码,看看SqlCeCommand是否在任何地方使用。这不应该是因为您正在使用SqLite和正确的DLL


如果在代码中找不到对SqlCeCommand的任何引用,请查看您最近可能添加的任何依赖于SQL CE/Mobile的外部库。

最近是否安装了任何应用程序,这些应用程序可能已使用不具有该方法名称的其他(可能更旧)版本覆盖此dll(或具有不同签名的相同方法)


运行VS命令提示符并转到该dll所在的目录,然后运行dumpbin/exports sqlceme30.dll。这将列出所有导出的函数名,并查看您试图调用的函数名是否在列表中。

此dll是SQL CE所需的。如果您将SQL CE dll与应用程序一起部署,或者在设备上安装SQL CE 3.0(CAB文件)


但是,奇怪的是,你出现了这个错误,并且你没有使用Sql CE,而是使用SQLite。你的项目中有对System.Data.SqlServerCe的引用吗?如果是这样,你能删除它,看看你的应用程序是否仍然编译和运行吗?

这个异常似乎表明内存不足的问题,有一篇博客文章对此进行了很好的解释l:


您可以尝试增加设备上的内存,或在启动时调用虚拟调用,以便加载dll。

我在应用程序中只使用sqlite.dll,并且我没有任何sqlceme30.dll的引用。我不明白这一点,如果我的所有引用都是sqlite,为什么我对sqlceme30.dll有异常?sqlce.dl没有任何sql连接l?仅适用于sqlite。内存不足似乎是最常见(也是最模糊)的问题。我仅使用此实例:“公共SQLiteConnection”与SqlCeCommand无关。我在整个解决方案中发现“SqlCeCommand”,但没有结果。您能否在问题中发布异常的完整跟踪?