2012-01-31 81 views
2

这是关于与.NET/Git和构建系统项目结构的问题,所以我会尽量保持简短:项目结构和构建系统的.NET连接到Git的

设置:

  • .NET(C#和VB.NET)
  • 混帐(前身为SVN,我们没有使用的外部)

以下的项目结构我想:

  • [NameOfApp]
    • git的
    • [NameOfApp - solutionfile正下方]
      • [PROJECT1]
      • [Project2中]
    • [配置]
    • [标准]:开发人员的一些标准配置(当他们第一个被复制时
      initilalizes他的回购,但他/她可以改变它们)
    • [脚本]:有些skripts,也为构建系统脚本
    • [依赖性]
      • [依赖性1]:是一个子模块
        • [主文件夹]
          • [解决方案文件]
            • [项目]
        • [依赖性]
          • [subdependency 1]
          • [subdependency 2]
            • [依赖性2]:另一个子模块
            • [另一种解决方案]:在一个子模块,有时我没有什么助手在 的构建过程中担心一些问题。由构建脚本调用。

我在寻找一个良好的结构为我们所有的项目,上述结构仅用于一个项目至今。

所以我的问题:

  • 这看起来像你的有效设置?我知道这是一个困难的问题,但是你有类似的设置或类似的设置有问题吗?
  • 你会使用git submodules还是有更好的?有人说他们是邪恶的,可能会造成问题。仅供参考,我的子模块是许多项目使用的项目。依赖关系有时候会保存解决方案文件,所以我有项目文件夹不足。然后在我的mainapp中引用项目。我不知道子树是否足够,我也听说过回购(对于Android),也许这是一个解决方案?或者还有其他工具来管理依赖关系吗?
  • 有时我的依赖关系也有依赖关系。所以,当我做一个递归克隆时,我会得到一个有些分支的奇怪结构(参见上面的结构)。有时我必须为我的主应用程序添加子依赖关系,因为我想在其中更改某些内容,并且需要重建依赖项。那么你如何保持子依赖或子依赖?
  • 如果你有开源的依赖(例如github),你是否直接使用dll?或者你是否分叉并添加一个git子模块?
  • 您是否将所有项目添加为projectreference或者是否直接引用dll(例如,您的子或子依赖关系将它打破一点而不总是重建整个项目树)?
  • 什么构建系统给你更喜欢?

我知道这些不是一个“正确”答案的问题,但也许你可以帮助我一点点,并分享一些想法。

感谢, Cyber​​1000

回答

0

项目结构:这是自然的事递归子模块的依赖关系。否则,子模块必须假定项目结构(硬编码相对路径以匹配父结构)。然后子模块专用于特定项目,但不适用于您开发的所有项目。

子模块:您必须熟悉它。这是至关重要的,因为DLL缺乏版本控制的可追踪性。子模块可以告诉项目当前正在使用的EXACT版本(散列)。

保留子依赖关系:不要保留,因为我们的构建服务器始终在每次构建之前运行“git clean”。

开源的依赖关系:叉子和作为子模块使用,我们可能会有小的修改,以满足我们的需求。例如,项目文件是VS2005,我们使用VS2010。然后当新版本可用时,我们更改项目文件并合并上游分支。

项目参考:如果可能,大部分时间使用项目参考。

构建系统:CruiseControl.NET,作为.NET人员。

相关问题