私はチャットボットを作っています。私のソリューションは現在4つのプロジェクトを含んでいます。 1つのプロジェクトはコンソールアプリケーションであり、もう1つはクラスライブラリプロジェクトです。コンソールアプリケーションは、非常に軽くなるように意図されています(ボットを起動する静的メインメソッドを持つ1つのクラス)。私は、ボットクラスライブラリとサポートライブラリの中にすべてのロジックと依存関係を含めるようにしています。
私の問題
私のボットは現在、SQLiteデータベースによって支えられています。このデータベースにアクセスするには、System.Data.SQLiteを使用しています。これはNuGetを使用してソリューションに追加しました。実行してボットをテストすると、次の例外が発生します。
Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found.
インターネットを検索した後、この問題はSQLite.Interop.dll
がコンソールアプリケーションの出力ディレクトリにコピーされていることを確認することです。これを行う最も簡単な方法は、NuGetを使用してプロジェクトに依存するものとしてSystem.Data.SQLiteを追加することだけです(SQLite.Interop.dll
は参照プロジェクトの出力フォルダにNuGetパッケージによって提供されるターゲットファイルを使用してコピーされています)。
質問
どのように私は、適切なDLLのビルドプロセス中に正しい場所にコピーされ得ることについて行くことができますか?私はSystem.Data.SQLite NuGetパッケージへの参照をコンソールアプリケーションに追加することを避けたいと思います。私は、オープンソースプロジェクトとして私のコードを公開することを考えているので、維持可能な解決策があることを望んでいます。そして、私は様々なdllを手作業でコピーしなければならないということを知ったり、 NuGetパッケージでは、パッケージ内のターゲットをビルドするために変更を加える必要があります。