中/大解决方案 - Visual Studio构建过程 - 需要建议

时间:2009-10-12 12:29:12

标签: visual-studio msbuild build-process

我目前正在开发一个大型应用程序。 目前,我有许多项目的解决方案(这可能会在时间的完整性上发生变化)。

我将目录结构设置为:

\ lib \(包含共享的第三方组件) 建立\ build \ bin(输出目录) build \ wwwroot(Web应用程序的输出目录) 配置\) src \(包含以下项目的文件夹)

在每个项目中,我已将构建位置(输出目录)设置为“.. \ build \ bin \”。如上所示,这使项目构建到src目录上方的build \ bin中。 在

Company.Entities References Company.Common 这包含所有业务对象(客户,订单,产品)等....

Company.Common 包含格式化字符串,日期,文件访问等的类.... 不包含对公司任何其他人的任何引用。库。

Company.Data 引用第三方库(例如Castle Windsor) 这包含IRepository,ICustomerRepository,IOrderRepository等接口.... 有RepositoryFactory类 - 它有一个名为“Get()”的方法,它使用Ioc(Castle Windsor)返回还包含IoC来解析这些存储库的当前实现。 Castle.config位于\ config \目录中 - 并在此项目中包含“作为链接”。我已将其设置为始终复制到输出目录

Company.Data.LinqToSql 引用Company.Data 这是当前的数据访问库。 它由IoC实例化

Company.Logic 对Company.Data 的引用 业务逻辑层 - 具有类似GetProductById(字符串id)的方法 - 这又调用Repository.Get()。GetById(id) - 例如

Company.Tests 自我解释......将来会更多地利用这一点。

Company.Web References Company.Logic,Company.Entities,Company.Common Web UI层 - 这是主要网站。

好的,希望这能让您了解我项目当前架构的一些背景......

目前,我正在将所有内容构建到build / bin目录中,除了Company.Web,它构建为build / wwwroot(这会在其中添加bin目录) 然后我有一个后期构建事件,复制aspx页面,样式表,图像,js文件等....从src / Company.Web位置到build / wwwroot 我已将Visual Studio配置为使用IIS进行调试,并设置iis虚拟目录以指向我的build / wwwroot文件夹。

...然而 某些必需的文件未内置到wwwroot / bin目录中 例如 - Company.Data.LinqToSql - 因为它没有被proejcts引用,而是使用IoC实例化

如何改进构建流程/项目结构以帮助我进行开发? 我将“大拇指”所有明智的建议。

1 个答案:

答案 0 :(得分:1)

跳出来的一件事是将输出文件复制到build / bin。 Release和Debug版本是否有单独的子文件夹?我曾经在一个大型项目中使用过与你类似的设置,我们经常遇到有人从一个版本切换到另一个版本的问题,但并非所有文件都必须重建(出于某种原因)。目录通常包含来自两个版本的文件混合。

至于构建后事件,我尽量避免使用它们,因为在以后需要修改它们时往往很难找到它们。当您在开发人员计算机上与构建服务器上需要不同的行为时,它们也会令人讨厌。相反,我通常会创建一个.bat文件或MSBuild脚本来处理文件复制,压缩等。

否则,听起来你有一个像样的结构和过程。在整个项目中,您可能会遇到问题,混淆等。请务必记下这些是可能要更改的项目,或者考虑未来的项目。