2016-09-20 13 views
0

背景情報MSBuildのプロセスとNuGetパッケージ

私はチャットボットを作っています。私のソリューションは現在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パッケージでは、パッケージ内のターゲットをビルドするために変更を加える必要があります。

答えて

0

すべてのコンポーネントが保存される単一の出力ディレクトリを作成するだけです。あなたは

  • >はOutput pathProject properties>Buildに行くことができますので、唯一のいくつかのプロジェクトを(同じ階層レベル上のすべてのプロジェクトということを想定して)持っている、(構成に応じて)..\..\bin\Debug\に設定します。 ..\..\bin\$(Configuration)\に設定することもできます。そうすれば、設定の名前が使用されます。
  • * .csprojファイルを手作業で編集し、同じ方法で<OutputPath>プロパティを変更することもできます。 OutputPathTargetFrameworkConfiguration propertiesなど(しかし、あなたはすべてのプロジェクトに<Import Project="..\..\Common.props">に持っている):
  • あなたはあなたのプロジェクトのための共通のプロパティが含まれている可能性がCommon.propsファイルを作成することができます。

実際にはもっと多くのオプションがありますが、これは実装が簡単です。

関連する問題