您已经安装了两个不同的方式来谈论从C#中不完全兼容的SQLite:各地土特产“sqlite3的薄的sqlite-Net组件.dll“程序集和用于SQLite的”System.Data.SQLite“全功能.NET数据提供程序。
sqlite-net只是将一些源文件添加到您的项目(SQLite.cs和SQLiteAsync.cs)。这里面,你会看到很多extern
的声明是这样的:
[DllImport("sqlite3" , EntryPoint = "sqlite3_open_v2", CallingConvention=CallingConvention.Cdecl)]
public static extern Result Open ([MarshalAs(UnmanagedType.LPStr)] string filename, out IntPtr db, int flags, IntPtr zvfs);
源码网假定有一个在你的输出目录名为“sqlite3.dll”文件。虽然文件“System.Data.SQLite.dll”实际上是一个与“sqlite3.dll”兼容的混合程序集,但安装System.Data.SQLite
程序包不会为您提供此文件。
所以,你有两个选择:
下载从http://www.sqlite.org/download.html
的sqlite3.dll本地库
查找了现在你的项目的一部分sqlite的净源文件中的所有引用,从
[DllImport("sqlite3", ...
改变他们
[DllImport("System.Data.SQLite.dll", ...
这可能是一个好主意,挑两种方法(源码网或System.Data.SQLite)之一,并卸载其他包(都有优点和缺点)。
该DLL文件是否存在于EXE目录中? – SLaks
没有sqlite3.dll但存在System.Data.SQLite.dll。 –
我只是重命名它或什么? –