2016-05-20 5 views
1

私のx86とx64の両方のフォルダにあるSystem.Data.SQLite.dllとSQLite.Interop.dllのバージョンは1.0.97.0です(このバージョンも更新されています古いバージョンから)。それらはすべて同じバージョン、this post、および類似の記事なので、SQLiteが奇妙な場所からSQLite.Interopをロードしようとしています

Unable to find an entry point named 'sqlite3_changes_interop' in DLL 'SQLite.Interop.dll'

助けることができてやりなさい:しかし、私は次のエラーを持っています。
ネイティブコードのデバッグを有効にしました。

Loaded 'L:\path_to_project_folder\x64\System.Data.SQLite.dll'

そして、これらの他のラインも出力に存在します:

Loaded 'L:\path_to_project_folder\x64\SQLite.Interop.dll'
Loaded 'C:\Program Files (x86)\Dell Backup and Recovery\Components\Shell\SQLite.Interop.dll'

この私がに似たデバッグ出力のメッセージを見るようにSQLiteのdllファイル自体は、正しい場所から読み込まれているようです私には奇妙に思えます...私はDell Backup and Recoveryユーティリティを持っています。このパスにSQLiteとInteropのdllの古いバージョンがあります(両方とも1.0.80.0)ので、プロジェクトフォルダ内のSQLiteのようですこのinterop dllを使用しようとすると私は絶対に何の手掛かりがありません。

これが起こる特別な理由はありますか?この行動を回避/排除する方法はありますか?

このユーティリティを削除することをおすすめしないでください。プログラムを使用しているすべての顧客に同じことを実行するように求める適切な方法ではありません。

+0

.dllをプロジェクトに移動しようとしましたか?参考としてではありません。それをそこにドラッグアンドドロップし、常にコピーするように設定するだけですか?私はちょうどこの問題に苦労し、それが私の解決策でした。 – markokstate

答えて

0

明らかに、私のシステムにインストールされているDell Backup and Recoveryユーティリティに問題がありました。同じユーティリティを含む同様の問題について読んでみると、そのユーティリティはSQLiteの特定の古いバージョンを何らかの形で強制的に使用しているようです。

私のプログラムが開始されるとすぐにインメモリ接続を開くと、この問題が修正されたようです。正しいバージョンがロードされています。

using (SQLiteConnection conn = new SQLiteConnection("Data Source=:memory:")) 
{ 
    conn.Open(); 
} 

私が持っていた参照して相互運用機能のバージョンのDellツールを使用し、互換性だったので、私は前のSQLiteを更新するには、この問題を見ていなかった可能性が高いようです。

関連する問題