C# 打开带有System.Data.SQLite的conn时出错,试图加载格式不正确的程序。Interop.084
我是C#新手,正在尝试使用System.Data.SQLite建立DB连接。我使用的是Compact Framework二进制文件版本1.0.84。以及WindowsVista和.NET3.5 我和夏普一起工作。我看到了另外两篇关于这个问题的文章,但我认为这些都是32位对64位的问题,它们是通过在某种形式的VisualStudio中修改项目属性来解决的,我没有使用它。我还检查了IDE中的项目属性,看到的所有选项都指向x86和32位。我还尝试在属性中使用“任意CPU”,但没有成功 以下是相关代码: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”,但没有成功 以下是相关代码:
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
*我知道这篇文章没有得到“很多”回复,但是如果我在寻找这些信息,我想找到一些相关的信息,所以我就把它放在这里。过了一段时间,我试着做同样的事情,我有一个项目在那里实现了这一点
解决方案是取消选中“首选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):同样,我非常感谢在这方面提供的任何帮助