2011-01-05 8 views
2

私は、DLL間の参照を解決するために依存性注入を使用しているC#ソリューションを持っています。私はexeプロジェクトとexeで参照されていない他のdllプロジェクトをいくつか持っています(これはIoCコンテナを通してdllを使います)。プロジェクト設定は、デフォルトのビジュアルスタジオ設定で、各自のフォルダに各dllを作成します。 exeはdllを参照しないので、exeの出力ディレクトリにコピーされることは決してなく、IoCフレームワークでは見つかりません。C# - 参照なしで依存性注入を使用する場合は、dllをexe出力ディレクトリにコピーしますか?

これはどのように処理しますか?あなたはそれらをすべて同じディレクトリに作りますか?投稿ビルドのコピーコマンドを使用しますか?または、他の何か?

答えて

4

私は通常、依存関係のアセンブリを共有フォルダに置くポストビルドのコピーコマンド(Build Eventsを使用しているため、自動です)を使用してこれを処理します。

次に、このフォルダがIoCコンテナの検索パスに含まれていることを確認してください。

別の同様のオプションは、メインアプリケーションプロジェクトでビルドイベントを使用することです。次に、依存関係を適切なフォルダにコピーできます。これには、同じソリューション内のさまざまなアプリケーションにさまざまな依存関係を使用できるようにする利点がありますが、依然として保守は容易です。

+0

実際にはメインプロジェクトにビルドイベントがありますが、問題は変更されず、F5キーを押すと変更されたプロジェクトがビルドされますが、コピーは実行されません。 exeは変更/構築されませんでした。 – NotDan

+0

@ノットダン:そうです - それは第2の(プル)アプローチの問題です。しかし、主にオプションがあります - ソリューションエクスプローラでソリューションを右クリックし、 "プロジェクトの依存関係"を選択します。ライブラリをメインプロジェクトの依存関係として追加してください。 ... –

+0

@ReedCopsey複数の構成ルート(wcfサービス、mvc/webアプリケーションなど)を使用している場合、「メイン」プロジェクトはありません。それぞれに20の参照を追加することはあまり楽しいことではありません。より良い解決策を見つけましたか?また、本番環境で共有ライブラリのパスをどのように扱いますか? – drozzy

2

使用後のビルドコピーコマンドまたは私はだろう(としなかった)共通ディレクトリに

0

のすべてのプロジェクトの出力ディレクトリを変更するには、ポストビルドコピーコマンドを使用します。すべての必要なコピーを作成し、ビルド後のイベントに添付して完了した.BATファイルを作成します。