为多个应用程序拆分.NET解决方案/ Git仓库

sir*_*ide 6 c# git project-management projects-and-solutions visual-studio

我目前只有一个解决方案,包含目前为止开发的一个应用程序和所有本地库的项目.整个解决方案也保存在一个Git仓库中.我现在要开发第二个将使用相同库的应用程序.该应用程序将具有与第一个和不同版本不同的发布周期.我的问题是如何分解代码,无论是在解决方案设置方面还是在Git方面.

在谈论答案之前,还有一些其他有用的细节:

  1. 应用程序部署到共享网络驱动器,而不是单个计算机,因此我可以完全控制它们的部署时间以及使用它们部署的内容
  2. 一旦构建,应用程序就不会共享库DLL.每个应用程序在其文件夹中都包含所有DLL,PDB和配置文件的完整副本.
  3. 目前,我是唯一一个正在发布的人,但是另外一两个人最终可能正在发布,所以我想记住这一点.

我一直在脑子里想着几个想法,但似乎没有一个想法令人满意.我考虑过只保留一个解决方案/一个Git仓库.我还考虑过使用子模块将解决方案分成几个Git repos,但子模块很麻烦.我还想过让每个应用程序都有自己的解决方案和所有库.那么问题是我是否可以在visual studio中打开多个解决方案.库经常需要随应用程序一起更改,因此在单独的解决方案或Git repos中将它们分开太多会使库和应用程序保持同步变得困难.我所关心的另一个问题是分支.如果我将解决方案拆分为几个Git存储库,我可以为每个应用程序分支,但如果我保留一个Git存储库,

我甚至可能不会向自己提出正确的问题,也有可能我只是有一个心理障碍阻止我解决一个简单的解决方案.无论哪种方式,我都会向SO社区提出一些想法.我希望一切都清楚,但如果没有,我会很高兴澄清.

bry*_*mcd 4

虽然它们可能很麻烦,但我认为子模块是解决这个问题的方法。我只是猜测你的目录结构是这样的:

mainapp
 \mainappdir
   \somefiles
    ...
|
|
 \library1
|
 \library2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您希望library1和library2成为子模块(这可能是显而易见的)。它们实际上并没有那么糟糕,只是需要在 Git 中习惯而已。

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