如何使用共享公共代码构建多个小解决方案(转移到SVN)

时间:2013-01-07 05:04:38

标签: svn projects-and-solutions

我即将将代码从VSS2005迁移到VisualSVN(同时添加到TeamCity中)。

这给了我一次性重组我们的代码文件/文件夹的机会,我正在寻找一些关于如何构建多个小解决方案的建议,这些解决方案通常包含其“区域”或每个项目共有的代码。

我有很多小型的内部应用程序 - winforms,MVC3站点,控制台/服务应用程序等,通常是部门特定的。大多数部门都为他们使用的东西提供了一些“通用”代码,然后有大多数项目常用的通用代码,例如扩展方法。

默认情况下,VS2010会创建一个“解决方案”文件夹,其中包含.sln文件,然后是“项目”文件夹。这意味着一切都非常离散 - 但共享项目更加困难,因为项目显得“特定于解决方案”

我知道你可以引用任何东西,但在光盘结构上它“看起来”特定于解决方案

CommonCode
--CCProj1
--CCProj2
HR.ServiceApp
-HR.ServiceApp.sln
--HR.SmallApp1.DAL
--HR.SmallApp1.Service
HR.WinFormsApp
-HR.WinFormsApp.sln
--HR.SmallApp2.DAL
--HR.SmallApp2.WinForms

另一种选择可能是这样的结构:

CommonCode
--CCProj1
--CCProj2
HR
-HR.Service.sln
-HR.WinForm.sln
--HR.DAL
--HR.Service
--HR.WinForms

将所有HR代码放在一个文件夹下 - 但对于新用户而言,多个解决方案可能会变得有点不清楚?

任何关于其他人通常做什么的建议都会非常感激(特别是转移到SVN)


另一种选择

HR
-HR.Common
--HR.Common.Repository
---HR.Common.Repository.sln
----HR.Common.DAL
-----HR.Common.DAL.csproj
----HR.Common.BLL
-----HR.Common.BLL.csproj
-HR.Services
--HR.Services.Service1.sln
---HR.Services.Service1
----HR.Services.Service1.csproj
--HR.Services.Service2.sln
---HR.Services.Service2
----HR.Services.Service2.csproj

2 个答案:

答案 0 :(得分:2)

结构化的答案对于您的团队而不是Q& A网站来说更具问题。您已经展示了各种各样的解决方案,每个解决方案都有其优点。这一切都取决于你团队最舒适的事情。

就如何与SVN联系而言 - 它没有。 SVN将允许您构建您喜欢的结构,因为它与IDE /编程语言等无关。

但是,当您处于过渡阶段时,您可以做的是创建代码的多个分支,这些代码组成不同的结构,以便您可以向团队演示每种不同的方式。做出决定后,将最佳代码合并到trunk中。为了管理这些分支,SVN存储库的顶层应该有文件夹trunk,branches和tags。

答案 1 :(得分:1)

我认为你必须保持逻辑软件配置和SVN结构的分离。我会像这样制作一般结构:

- trunk
    - <general structure>
- branches
    - release_bugfix01
        - <general structure>
    - release02_rc1
        - <general structure>
- tags
    - release01
    - release02

“一般结构”是:

 - common_code_1
 - common_code_2
 - project_one
 - project_three
 - winform01
 - humanresources_MVC3_site
 - console_service_app01

项目和公共代码的内部结构可以是您想要的任何形状,项目和公共代码之间的逻辑依赖性必须在存储库之外定义。

您可以在SVN Book

中详细了解标准版面