いくつかのマシンでhavokを引き起こしたSQLiteで数回頭を回した後、私はライブラリの 'Managed Only'バージョンを見つけました。 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/ ILMergeを使用した後にDLLが見つからない
私は興奮してこれを私のプロジェクトフォルダに入れました。だから、私のプロジェクトはアーキテクチャに関係なく、全員のコンピュータ上で動作します!
実際に私はILMergeを使用してみました(私の依存関係はすべて管理されています)ので、DLLファイルをリソースとしてコピーして、不在を検出した場合は出力フォルダに書き込む必要はありません。
私は、次のコマンドを使用してEXEをコンパイル:SQLiteのが管理されているものの、それはのようなフラグが付けられていないとzeroPeKind
ISN場合は、コンパイルでエラーが発生するため
ilmerge.exe /target:winexe /zeroPeKind /out:"Core View.exe" CoreView.exe System.Data.SQLite.dll OpenHardwareMonitorLib.dll
(zeroPeKind
フラグが」必要とされています
問題は今、それがうまく起動するが、DLLファイルが存在しない場合、私は、任意のデータベース操作を実行しようと次のエラーを取得する、ということですSystem.DllNotFoundException: Unable to load DLL 'System.Data.SQLite.DLL'
これは簡単に修正できますか?
System.Data.SQLite.dllは実際には管理されていません。ダウンロードしたバイナリは、pinvokeを使用してsqlite3.dllのアンマネージ機能にアクセスします。 – Will
あなたはそれについて確かですか?私は、通常の使用方法ではなく、「管理対象のみ」というラベルのバイナリをダウンロードしました。 – CJxD
はい。 System.Data.SQLiteのユーザーは、完全に管理されたユーザーではありません。ある時点では、まだアンマネージコードがあります。つまり、外部DLLなしでSystem.Data.SQLiteを使用することはできません。 – Will