gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:07 28 4
gpt4 key购买 nike

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

设置:

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

我试过以下项目结构:

  • [应用名称]
    • .git
    • [NameOfApp - 解决方案文件正下方]
      • [项目 1]
      • [项目 2]
    • [配置]
    • [标准]:开发人员的一些标准配置(它们在第一个时被复制
      初始化他的 repo 协议(protocol),但他/她可以更改它们)
    • [Scripts]: 一些脚本,也是构建系统的脚本
    • [依赖项]
      • [dependency 1]: 是一个子模块
        • [主文件夹]
          • [解决方案文件]
            • [项目]
        • [依赖项]
          • [从属关系 1]
          • [从属关系 2]
            • [依赖2]:另一个子模块
            • [另一个解决方案]:在一个子模块中,有时我有一些小 helper 来解决一些问题 构建过程。由构建脚本调用。

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

所以我的问题:

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

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

谢谢,赛博1000

最佳答案

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

子模块:你必须熟悉它。这是必不可少的,因为 dll 缺乏版本控制的可追溯性。子模块可以告诉项目当前使用的确切版本(散列)。

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

open-source-dependencies: fork 并作为子模块使用,我们可能会进行一些小的修改以满足我们的需要。比如项目文件是VS2005,我们用的是VS2010。然后我们更改项目文件并在新版本可用时 merge 上游分支。

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

构建系统:CruiseControl.NET,作为 .NET 专家。

关于c# - 连接到 git 的 .NET 的项目结构和构建系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079596/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com