C# 为多个应用拆分.NET解决方案/Git repo
我目前有一个单一的解决方案,其中既包含迄今为止开发的一个应用程序,也包含针对所有国产库的项目。整个解决方案也保存在一个Git回购中。我现在将要开发第二个应用程序,它将利用这些库。该应用程序的发布周期将不同于第一个版本和不同的版本。我面临的一个或多个问题是如何分割代码,无论是在解决方案设置方面还是在Git方面 在讨论答案之前,还有一些其他有用的细节:C# 为多个应用拆分.NET解决方案/Git repo,c#,visual-studio,git,project-management,projects-and-solutions,C#,Visual Studio,Git,Project Management,Projects And Solutions,我目前有一个单一的解决方案,其中既包含迄今为止开发的一个应用程序,也包含针对所有国产库的项目。整个解决方案也保存在一个Git回购中。我现在将要开发第二个应用程序,它将利用这些库。该应用程序的发布周期将不同于第一个版本和不同的版本。我面临的一个或多个问题是如何分割代码,无论是在解决方案设置方面还是在Git方面 在讨论答案之前,还有一些其他有用的细节: 应用程序部署到共享网络驱动器,而不是单个计算机,因此我可以完全控制何时部署应用程序以及使用它们部署什么 构建后,应用程序不会共享库DLL。每个应用程
我甚至可能没有向自己提出正确的问题,也有可能我只是有一个思维障碍,使我无法解决一个简单的问题。不管怎样,我都会听从SO社区的意见。我希望一切都清楚,但如果不清楚,我很乐意澄清。我会将所有内容分成单独的解决方案,特别是将在多个应用程序中使用的库。正如您所提到的,不同的应用程序和库有不同的发布周期,最终可能会单独开发。由您将它们划分为逻辑单元,并确保库独立于它们将在其中使用的应用程序 至于在Git中要做什么,对于每个逻辑工作单元(应用程序或库)有单独的存储库是有意义的,或者至少在同一存储库中有单独的分支
祝你好运,不要泄气。从长远来看,这将对您有益。虽然子模块可能会很麻烦,但我认为子模块是进行此操作的方式。我猜你的目录结构是这样的:
mainapp
\mainappdir
\somefiles
...
|
|
\library1
|
\library2
在这种情况下,您希望library1和library2成为子模块(这可能很明显)。它们真的没那么糟糕,只是在Git IMHO需要习惯的东西
另一个需要考虑的问题是将Laby1和LabeReal2链接到两个应用程序的文件系统上。在这种情况下,每个库都可以是它自己的repo,但不能使用子模块进行管理(我认为您必须将它们添加到.gitignore文件中)。通过在每个应用程序中使用符号链接,repo/源代码管理将仅位于两个库目录上。在一个位置拉取/分支会对上两个应用程序产生影响,而不需要管理每个应用程序的库文件。
我不知道是否有必要将库单独放置在repo中。我同意所有的图书馆都只有一份回购协议。不过,你的最后一句话让我有点困惑。他说,如果你使用指向库的符号链接,你可以将它们保存在单独的解决方案中,但也可以在两个应用程序解决方案中将库作为项目引用。由于符号链接都指向相同的文件,因此在开发任何一个应用程序期间所做的任何更改都将影响这两个应用程序。这将使您不需要子模块。听起来它只是一个穷人的子模块,对其他可能在项目中工作的开发人员不友好。我想我必须以这样或那样的方式使用子模块。是的,韦德·坦迪说得对。一次更新将自动影响两个应用程序,而无需git拉动每个子模块。我不一定把它称为“穷人的”解决方案。当然,这有点僵硬,但如果你必须在同一时刻更新两个应用程序,也没那么糟糕。您可以轻松地将app1 app2 library1 library2保留在相同的目录中,以减轻混淆。