NuGetからのマルチアーキテクチャ(x86、x64)バージョンのSQLiteのデフォルトのインストールは、あなたが説明した動作を示します。.NETランタイムがマシン上でアプリケーションを実行するために選択した実際のアーキテクチャの正しいバージョンをロードしたい場合は、次のように、DLLローダーに正しいライブラリの場所を示すヒントを与えることができます。
Program32.Main()の前に、SetDLLDirectory()へのkernel32.dll関数呼び出しの宣言を追加します。
[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
static extern bool SetDllDirectory(string lpPathName);
次に、独自の方法を使用して正しいサブディレクトリを特定し、「SQLite.Interop.dll」のアーキテクチャ固有のバージョンを見つけます。次のコードを使用します。
[STAThread]
static void Main()
{
int wsize = IntPtr.Size;
string libdir = (wsize == 4)?"x86":"x64";
string appPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
SetDllDirectory(System.IO.Path.Combine(appPath, libdir));