您已經安裝了兩個不同的方式來談論從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。 –
我只是重命名它或什麼? –