我们有一个框架,它定义了许多接口和一些基本的默认实现。我们称它为 CompanyFramework。我有一些 ASP.NET MVC 扩展,目前存储在一个单独的项目 CompanyFramework.Web.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 程序集。
我应该制作一个单独的 CompanyFramework.Web.Mvc.StructureMap 项目吗?这种方法总体上看起来最干净,但我觉得我开始引入一堆轻量级的附属程序集,它们使整个项目结构变得混乱。