多くのインターフェースといくつかの基本的なデフォルト実装を定義するフレームワークがあります。これを CompanyFramework と呼びましょう。現在、別のプロジェクト CompanyFramework.Web.Mvc に格納されている ASP.NET MVC 拡張機能がいくつかあります。これは、コア フレームワークを使用するが MVC とは関係のないアプリケーションが ASP.NET MVC ライブラリを参照する必要がないようにするためです。余分なアセンブリには 3 ~ 4 個のクラス ファイルしか含まれていないため、このセットアップはあまり好きではありませんが、メイン フレームワーク アセンブリに不要な依存関係を導入することを避ける最もクリーンな方法でした。
現在、ASP.NET MVC に使用する StructureMap 固有の拡張機能がいくつかあります。具体的には、カスタム コントローラー ファクトリとモデル バインダー タイプのものです。そのようなものをどこに置きますか?CompanyFramework.Web.Mvc プロジェクトでそれをスローすることもできますが、それを使用する ASP.NET MVC プロジェクトは、使用されていなくても、StructureMap アセンブリへの参照を持つことになります。別の CompanyFramework.StructureMap プロジェクトを作成することもできますが、ASP.NET MVC に依存しない StructureMap の拡張機能を開発したとしても、MVC アセンブリを使用するクラスの MVC アセンブリを参照するのは面倒です。
別の CompanyFramework.Web.Mvc.StructureMap プロジェクトを作成する必要がありますか? このアプローチは全体的に最もクリーンに見えますが、プロジェクト全体の構造を乱雑にする軽量のサテライト アセンブリを導入し始めているように感じます。