コンストラクタインジェクションを使って自分のプロジェクトにDIを実装しました。これでコンポジションルートはすべての解決が行われるところです(これはWebプロジェクトで行います)。解決を処理するだけの追加のプロジェクトは非常識です。IoCと「実装の詳細を隠す」
ビルドディレクトリに実装アセンブリが残っているのは、(まだプロキシプロジェクトによって参照されているためですが)Webプロジェクトレベルで参照する必要はありません。これらのインタフェースの実装は、明示的に参照されていない限り、実装されている場所以外の場所からアクセスできないことを意味します。これは、何かが間違っていることをすぐに突き止めるでしょう。
エラーが発生しやすいか、それとも合理的なのでしょうか?
私は、「プロキシ」プロジェクトの目的上明確ではありませんよ。 Webアプリケーションから直接の依存関係を実装に取り除くこと、そして目標がプラグインモデルであるように思えます。ただし、これが当てはまる場合は、間接参照のレベルを追加するだけです。 MEFを使用して、コンパイル時に知られていない外部アセンブリから実装の構成を行うことを検討しましたか?これを行うように設計されています。 – jonsequitur
関連:http://stackoverflow.com/questions/9501604/ioc-di-why-do-i-have-to-reference-all-layers-assemblies-in-entry-application/9503612#9503612 –