これがすでにカバーされている場合は申し訳ありませんが、どこにも答えが見つかりません。
MEF コンポーネントを使用する MVC4 Web アプリケーションがあります。これらのコンポーネントは、次のように、同じソリューション内の別のプロジェクトに存在します。
- 私の解決策
- Web プロジェクト
- MEF インターフェイスを定義する Dll プロジェクト (すべてが参照)
- 実際の MEF クラスを含む Dll プロジェクト
- 実際の MEF クラスを含む別の Dll プロジェクト
Web プロジェクトは、MEF インターフェイスを含むプロジェクト (#2) を参照しますが、実際の MEF クラスを含むプロジェクト (#3 & #4) は参照しません。これがフレームワークの要点だからです。コンパイル済みのアセンブリを Web プロジェクトの bin フォルダーにコピーするビルド後の手順が #3 と #4 にあり、Web プロジェクトもプロジェクト #3 と #4 に依存しているとマークされています。
これは私のマシンでは見事に機能し、DLL をコンパイルしてシャッフルしますが、実際に展開する必要がある場合は、2 つの手順を実行する必要があります。他の場合と同じように Web プロジェクトを展開し、次にプロジェクト #3 で作成されたアセンブリを手動でコピーします。そして#4をサーバーに。それらは実際には Web プロジェクトによって参照されていないため、Web パブリッシングによって取り上げられることはありません。
Web Publish プロジェクトの設定を調べたところ、プロジェクトのフォルダー内のすべてのものをコピーするように設定できるようですが、特定の補助ファイルだけをコピーするように設定することはできません。Web プロジェクトの #3 および #4 アセンブリへのハード参照を追加する以外に、これを回避する方法はありますか?