.NET的项目结构和构建系统连接到git

时间:2012-01-31 12:36:00

标签: c# .net git version-control project-structure

这是一个关于.NET / git和构建系统的项目结构的问题,所以我会尽量保持简短:

设定:

  • .NET(C#和VB.NET)
  • git(以前是svn,我们没有使用外部)

我试过以下项目结构:

  • [NameOfApp]
    • 的.git
    • [NameOfApp - 直接在下面的解决方案文件]
      • [PROJECT1]
      • [Project2的]
    • [配置]
    • [标准]:开发人员的一些标准配置(当第一个被复制时,它们被复制             初始化他的回购,但他/她可以改变他们)
    • [脚本]:一些skripts,也是构建系统的脚本
    • [依赖性]
      • [dependency 1]:是一个子模块
        • [主文件夹]
          • [解决方案文件]
            • [项目]
        • [依赖性]
          • [subdependency 1]
          • [subdependency 2]
            • [依赖关系2]:另一个子模块
            • [另一种解决方案]:在一个子模块中,有时我会在一些问题上找到帮助  构建过程。由构建脚本调用。

我正在为所有项目寻找一个好的结构,上述结构目前只用于一个项目。

所以我的问题:

  • 看起来像是一个有效的设置吗?我知道这是一个很难的问题,但是你有类似的设置或者有类似设置的问题。
  • 你会使用git子模块还是有更好的东西?有人说他们是邪恶的,可能会导致问题。仅供参考,我的子模块是许多项目使用的项目。依赖项有时包含解决方案文件,因此我的项目文件夹不足。然后在我的mainapp中引用其中的项目。我不知道子树是否足够,我也听说过repo(对于android),也许这是一个解决方案?或者还有其他工具来管理依赖关系吗?
  • 有时我的依赖关系也有依赖关系。因此,当我进行递归克隆时,我会得到一个有点子序列的奇怪结构(参见上面的结构)。有时我必须在主应用程序中添加子依赖项,因为我想在那里更改某些内容并且需要重建依赖项。那么如何保持子依赖性或子依赖性呢?
  • 如果您有开源依赖项(例如来自github),您是否直接使用dll?或者你分叉并添加一个git子模块?
  • 您是将所有项目添加为项目引用还是直接引用dll(例如,您的sub或subsubdependencies将其分解为一点并且不总是重建整个项目树)?
  • 您更喜欢哪种构建系统?

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

谢谢, Cyber​​1000

1 个答案:

答案 0 :(得分:0)

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

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

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

open-source-dependencies:分叉并用作子模块,我们可能会进行微小的修改以满足我们的需求。例如,项目文件是VS2005,我们使用VS2010。然后,当新版本可用时,我们更改项目文件并合并上游分支。

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

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