C# 打开带有System.Data.SQLite的conn时出错,试图加载格式不正确的程序。Interop.084

C# 打开带有System.Data.SQLite的conn时出错,试图加载格式不正确的程序。Interop.084,c#,sqlite,system.data.sqlite,C#,Sqlite,System.data.sqlite,我是C#新手,正在尝试使用System.Data.SQLite建立DB连接。我使用的是Compact Framework二进制文件版本1.0.84。以及WindowsVista和.NET3.5 我和夏普一起工作。我看到了另外两篇关于这个问题的文章,但我认为这些都是32位对64位的问题,它们是通过在某种形式的VisualStudio中修改项目属性来解决的,我没有使用它。我还检查了IDE中的项目属性,看到的所有选项都指向x86和32位。我还尝试在属性中使用“任意CPU”,但没有成功 以下是相关代码:

我是C#新手,正在尝试使用System.Data.SQLite建立DB连接。我使用的是Compact Framework二进制文件版本1.0.84。以及WindowsVista和.NET3.5

我和夏普一起工作。我看到了另外两篇关于这个问题的文章,但我认为这些都是32位对64位的问题,它们是通过在某种形式的VisualStudio中修改项目属性来解决的,我没有使用它。我还检查了IDE中的项目属性,看到的所有选项都指向x86和32位。我还尝试在属性中使用“任意CPU”,但没有成功

以下是相关代码:

try{

 SQLiteConnection conn;

 conn = new SQLiteConnection("Data Source=C:\\my path");

 conn.Open();
 conn.Close();
}
catch (SQLiteException ex){
   throw new Exception(ex.Message);

}
以下是我在调试中运行时遇到的异常: 我替换了我的本地路径

System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception de HRESULT: 0x8007000B)
in System.Data.SQLite.SQLite3.Open
in System.Data.SQLite.SQLiteConnection.Open
in mypath 
in System.Windows.Forms.Control.OnClick
in System.Windows.Forms.Button.OnClick
in System.Windows.Forms.Button.OnMouseUp
in System.Windows.Forms.Control.WmMouseUp
in System.Windows.Forms.Control.WndProc
in System.Windows.Forms.ButtonBase.WndProc
in System.Windows.Forms.Button.WndProc
in ControlNativeWindow.OnMessage
in ControlNativeWindow.WndProc
in System.Windows.Forms.NativeWindow.DebuggableCallback
in         ComponentManager.System.Windows.Forms.UnsafenativeMethods.IMsoComponentManager.FPushMessageLoop
in ThreadContext.RunMessageLoopInner
in ThreadContext.RunMessageLoop
in System.Windows.Forms.Application.Run
in mypath
另外,当我添加SQLite.Interop.084.dll作为引用时,我会收到一条关于坏图像文件或没有元数据的警告。“本地副本”选项在属性中显示为灰色

我将DLL替换为旧版本(1.0.66),现在我得到“MSB3247-在同一依赖程序集的不同版本之间发现冲突”

我删除了我项目文件夹中的所有内容,从头开始,但我一直陷入困境。是否有人成功实施了紧凑框架的解决方案?有人能推荐一个类似的数据库管理器,可以在pocket pc中使用吗

  • 在与版本1.0.66斗争数小时后,我回到了版本1.0.84。现在我收到了这样一条消息:无法加载c:\dev\sqlite\dotnet\System.Data.sqlite下的文件SQLite3.cs
该路径必须来自他们开发dll的机器,所以我猜适配器有问题。我想我现在更愿意尝试使用不同的数据库软件,所以我想在这一点上,我会接受这方面的建议,而不是解决方案

如果您对此有任何帮助,我们将不胜感激。

好的,所以我尝试了“常规”Windows版本,第一次就成功了。我没做什么不同的事。不幸的是,我需要开发一台袖珍电脑,所以我还是搞砸了

我猜Compact框架的二进制文件有某种缺陷,而C#的模糊异常也没有多大帮助。我想二进制文件是为64位机器开发的,就这样离开了

因此,基本上,使用System.Data.SQLite for Windows Compact Framework,版本1.0.66或1.0.84都无法实现。至少是开箱即用。我要寻找另一个版本,看看会出现什么


*我知道这篇文章没有得到“很多”回复,但是如果我在寻找这些信息,我想找到一些相关的信息,所以我就把它放在这里。

过了一段时间,我试着做同样的事情,我有一个项目在那里实现了这一点


解决方案是取消选中“首选32位”框并使用“x86平台”目标,即使这将使用双资源进行下载。

您不能添加SQLite.Interop.084.dll作为参考,但请确保使用正确的版本(x86 vs x64)。我很确定这个问题与错误的dll版本有关。我在System.Data.SQLite网站上只找到了一个Compact Framework下载:SQLite-netFx35-binary-PocketPC-2008-1.0.84.0.zip,它只包含SQLite.Interop.084.dll和另一个System.Data.SQLite.dll。是否需要手动将互操作添加到我的一个项目文件夹中?尝试手动将dll复制到生成输出文件夹中,但根据错误,它似乎已经存在。我从项目引用中删除了互操作dll,然后将其复制到调试文件夹中。我还需要.pdb文件吗?我删除了它,因为它似乎指向了他们用来开发它的机器中的一条路径。我是否使用了正确类型的异常对象?还有其他类型的软件可以提供更多信息吗?我只是想澄清一下:我使用的是32位Windows Vista,但我计划开发一台Pocket PC,所以我使用的是Compact Framework。我的项目的概要文件针对的是Compact Framework,我从这里下载了Windows CE的预编译二进制文件(.NET Compact Framework 3.5):同样,我非常感谢在这方面提供的任何帮助