3

小さなプロジェクトに SQLite を使用することにしました。しかし、私は問題に遭遇しました。SQLite には 2 つの異なる .dll ファイルが付属しています。そのうちの 1 つを参照として追加しました。もう1つは「有効なアセンブリまたはCOMコンポーネントではない」ため、参照として追加できません。ただし、最初の .dll (参照として既に追加されているもの) がそれを見つけることができるフォルダーにある必要があるだけなので、それは問題ではありません。したがって、当然のことながら、UserControls を使い始めるまでは正常に動作するビルド ディレクトリにコピーします。

私のユーザーコントロールには、ビューモデルを介してデータベースアイテムへのデータバインディングが含まれています。私がそれを正しく理解していれば、デザイナーでユーザーコントロールを表示するために、プログラムを実行したかのようにビルドされます。問題は、それらがデザイナに組み込まれているときにデータバインディングも作成されるため、いくつかの小さなデータベースクエリが実行されることです。しかし、ユーザーコントロールがデザイナー用に構築され、それらのクエリを実行しようとすると、最初の .dll (含まれているもの) から dllnotfoundexception が発生します。2 つ目は見つかりません。

2 番目の .dll を GAC に追加すると、最初の .dll がそれを見つけるのに役立つと思いましたが、gacutil によると「モジュールにはアセンブリ マニフェストが含まれていると予想されていた」ため、できなかったようです。

これを解決する良い方法はありますか?私は愚かで、明らかなことを見落としているだけですか?問題を説明する際にできるだけ明確にしようとしましたが、不明な点がある場合はお問い合わせください。

前もって感謝します。

編集: 明確にするために、デザイナー モードでユーザー コントロールを開いたときに発生する DllNotFoundException により、ビジュアル スタジオがクラッシュします。

4

3 に答える 3

1
于 2012-04-27T14:38:55.507 に答える
1

使用している VS.NET のバージョンに応じて、sqlite dll を以下のいずれかの場所にコピーすることをお勧めします...

デザイナー アセンブリ プローブの場所を見つける 1 つの方法は、

  1. devenv.exe ファイルを見つけます。
  2. devenv.exe.config ファイルをメモ帳で開きます。
  3. その中のエントリを探します

     <probing privatePath="PublicAssemblies;PrivateAssemblies"/>
    
  4. それらの sqlite dll をそれらのディレクトリの 1 つにコピーします。

  5. ビジュアル スタジオを再起動します。

お役に立てれば。

于 2012-04-27T14:27:09.813 に答える
0

関連する SQLite ファイルの詳細を提供していないため、次のように推測できます。

ほとんどの場合、SQLite 用の ADO.NET データ プロバイダーである .NET dll があり、もう 1 つはおそらく SQLite 自体である非 .NET dll です。ADO.NET Data Provider dll と同じ場所にそれが必要なだけです。

于 2012-04-27T14:10:39.197 に答える