代码之家  ›  专栏  ›  技术社区  ›  siride

为多个应用拆分.NET解决方案/Git回购

  •  5
  • siride  · 技术社区  · 15 年前

    我目前有一个单一的解决方案,其中既包含迄今为止开发的一个应用程序,也包含针对所有国产库的项目。整个解决方案也保存在一个Git回购中。我现在将要开发第二个应用程序,它将使用相同的库。该应用程序的发布周期将不同于第一个版本和不同的版本。我的问题是如何分割代码,无论是在解决方案设置方面还是在Git方面。

    1. 这些应用程序被部署到一个共享的网络驱动器上,而不是单独的计算机上,因此我可以完全控制何时部署它们以及使用它们部署什么
    2. 库dll在构建之后不会被应用程序共享。每个应用程序的文件夹中都有所有DLL、PDB和配置文件的完整副本。
    3. 目前,我是唯一一个做发行版的人,但另外一两个可能最终会做发行版,所以我要记住这一点。

    我脑子里有几个想法,但没有一个是令人满意的。我考虑过把所有东西都放在一个解决方案/一个Git回购中。我还考虑过使用子模块将解决方案拆分为多个Git回购,但是子模块很麻烦。我还考虑过让每个应用程序都有自己的解决方案,让所有的库都在另一个应用程序中。问题是我是否可以在visualstudio中打开多个解决方案。这些库经常需要随着应用程序的变化而变化,因此在单独的解决方案或Git repos中过多地将它们分开会使库和应用程序很难保持同步。我关心的另一个问题是分支。如果我将解决方案拆分为几个Git repo,我可以为每个应用程序设置分支,但是如果我保留一个Git repo,我只能为所有应用程序设置一组分支。

    2 回复  |  直到 15 年前
        1
  •  3
  •   brycemcd    15 年前

    虽然它们可能很麻烦,但我认为子模块是进行此操作的方式。我猜你的目录结构是这样的:

    mainapp
     \mainappdir
       \somefiles
        ...
    |
    |
     \library1
    |
     \library2
    

    在这种情况下,您希望library1和library2是子模块(这可能很明显)。它们真的没那么坏,只是在Git IMHO中习惯的东西。

    另一个要考虑的途径是在文件系统上象征性地链接library1和library2,以便两个应用程序都使用。在这种情况下,每个库都可以是它自己的repo,但不能用子模块进行管理(我认为您必须将它们添加到.gitignore文件中)。通过在每个应用程序中使用符号链接,repo/源代码管理将只在两个库目录上。在一个地方拉/分支会影响上的两个应用程序,而不需要管理每个应用程序的库文件。

        2
  •  0
  •   Bernard    15 年前

    我会将所有内容拆分为单独的解决方案,尤其是将在多个应用程序中使用的库。正如您所提到的,不同的应用程序和库有不同的发布周期,最终可能会被单独开发。由您来将它们拆分为逻辑单元,并确保这些库独立于将在其中使用的应用程序。

    至于在Git中要做什么,对于每个逻辑工作单元(应用程序或库)有单独的存储库是有意义的,或者至少在同一存储库中有单独的分支。

    祝你好运,不要灰心。从长远来看,这对你是有益的。