私はこの問題についていくつかの調査を行い、いくつかの可能な解決策を見てきましたが、私にとっては何もうまくいきませんでした.
ファイルまたはアセンブリ 'System.Data.SQLite.dll' またはその依存関係の 1 つを読み込めませんでした。指定されたモジュールが見つかりませんでした。
SQLite を使用する WPF アプリケーションがあります。私の開発マシン (Windows 7、64 ビット、Visual Studio 2010) では、すべて正常に動作します。QA 部門では、すべてが正常に機能しています。しかし、ビルド マシン (Windows Server 2008、64 ビット) およびカスタマー サービス (32 ビット) では、エラーが発生します。
私の .sln は、2 つの .exe と 1 つの lib (両方の .exe プロジェクトで使用され、SQLite ロジックを含む) の 3 つのプロジェクトで構成されています。3 つすべてにデバッグとリリースの 2 つの構成があり、各バージョンは x86 にコンパイルされます。SQLite dll は実行ディレクトリにあります。
GAC に 3 つの System.Data.SQLite エントリがあります。これは、実行中のディレクトリで見つかった dll を使用しない理由がわかっているわけではなく、自分のコンピューターで成功している理由として検証されていますが、他の特定のコンピューターでは成功していません。 . すべての GAC エントリはバージョン 1.0.66.0 で、同じ公開キー トークンを持ち、それぞれ MSIL、x86、AMD64 に関連付けられています。GAC からファイルを削除すると、プロジェクトの参照を「ローカルにコピー」に変更するまで、エラーを再現できました。その時点で、コンピューターで再び機能しました (他のコンピューターでは機能しませんでした)。
これがどれほど賢いかはわかりませんが、(プロジェクトでまだ参照を使用しながら) dll の動的ロードを試みることにし、32 ビットまたは 64 ビット環境で実行しているかどうかを確認し、Assembly.LoadFrom を使用して正しいビットの SQLite dll をロードします。そのコードは正常に実行され、私の 64 ビット マシンでは 32 ビット バージョンに対応します。これは、x86 コンパイル プラットフォームが原因であると推測しています。とにかく、他のマシンで見られるエラーは変わっていません。
この問題を解決する方法に関する提案はありますか?
編集:GACから参照を削除した後に結果を反映