部署具有IoC管理的依赖项的ASP.NET MVC项目
我们最近为大多数内部解决方案调整了以下通用结构:部署具有IoC管理的依赖项的ASP.NET MVC项目,.net,asp.net-mvc,inversion-of-control,web-deployment,.net,Asp.net Mvc,Inversion Of Control,Web Deployment,我们最近为大多数内部解决方案调整了以下通用结构: SolutionRoot Interfaces Models Services Repositories Web 其中服务,存储库和Web仅直接引用接口和模型项目。所有依赖项都通过IoC容器进行管理(我们在内部框架中创建了一个自定义包装器)。当然,服务和存储库可能有自己的外部依赖集 现在,当我们部署WebMVC项目时,我们显然需要在bin文件夹中拥有所有必要的DLL。由于Web项目与特定实现之间没有直接的
SolutionRoot
Interfaces
Models
Services
Repositories
Web
其中服务
,存储库
和Web
仅直接引用接口
和模型
项目。所有依赖项都通过IoC容器进行管理(我们在内部框架中创建了一个自定义包装器)。当然,服务
和存储库
可能有自己的外部依赖集
现在,当我们部署Web
MVC项目时,我们显然需要在bin文件夹中拥有所有必要的DLL。由于Web
项目与特定实现之间没有直接的依赖关系,因此我最终为服务
和存储库
项目编写了一个简单的构建后脚本,将所有相关DLL复制到Web
或任何其他消费项目的bin文件夹中. 然后我需要在项目中包含相关的DLL,并将它们标记为内容
显然,这不是管理部署依赖关系的最舒适的方法
我想知道的是是否有更好的方法来解决这个问题
注意:目前,我们没有CI服务器,近期也没有计划使用任何CI服务器。如果以下所有假设都成立:
- 团队中的惯例是永远不要直接从Web在服务和存储库中使用实现
- 这一公约得到充分理解和遵守
- 您不需要为不同的部署引用不同的实现