在 github 的单个存储库中拥有多个 .Net / NetCore 解决方案

问题描述 投票:0回答:2

我希望不要用一个您之前可能已经问过的问题来压倒您,但是在尝试了不同的解决方案之后,我没有获得好的结果。

基本上,我想要解决的问题如下:我在我的 GitHub 帐户中创建了一个存储库,现在我有三个解决方案,一个是 net-core 控制台应用程序,另一个是 mvcCore 应用程序,最后是一个 API。

我想将每个解决方案添加到我在 GitHub 上创建的存储库中,但要以有序的方式添加,也就是说每个解决方案都位于一个“子文件夹”中

visual-studio powershell github repository
2个回答
1
投票

如果您在各自的 GitHub 存储库中管理每个解决方案,那么您可以在公共父存储库(您最初创建的存储库)中将它们引用为 submodules

您甚至可以声明这些子模块遵循它们自己的分支,这意味着简单的

git submodule update --init --remote
会将其内容更新为各自分支的最新提交。


0
投票

我把VonC的答案当作事实,我正要开始白费力气地研究git子模块并尝试它们,但幸运的是我发现事实上,

您不必使用 git 子模块!

Visual Studio 2022 将在单个 git 存储库下使用多个解决方案。

所以,假设我们曾经有这样的结构:

repos/
    repo1/
        .git/
        .gitignore
        solution1.sln
    repo2/
        .git/
        .gitignore
        solution2.sln

我们现在想要迁移到这样的结构:

monorepo/
    .git/
    .gitignore
    solution1/
        solution1.sln
    solution2/
        solution2.sln

通过这个新结构,我们希望能够做到以下几点:

  • 使用 Visual Studio 的一个实例打开解决方案 1,
  • 使用另一个 Visual Studio 实例打开解决方案2,
  • 通过 Visual Studio 任一实例的“Git Changes”面板查看并提交从 Visual Studio 任一实例对存储库所做的任何更改。

以下是如何实现它。

  • 使用 Windows 文件资源管理器,创建所需的目录结构,并将所有文件放在正确的位置。这可能涉及:
    • 将 repo1 重命名为 monorepo,
    • 将除 .git/ 和 .gitignore 之外的所有内容移至解决方案1/,
    • 将除 .git/ 和 .gitignore 之外的所有内容从 repo2 复制到solution2/。
  • 确保 monorepo 是 Visual Studio 以前从未见过的新目录。 (如果这曾经是一个解决方案目录,那么 Visual Studio 会记住这一点,并会使用各种曾经正确但现在不再正确的假设来打开它,因此它会出现故障。)
  • 确保根目录下没有
    .vs
    目录。 (同样是因为 Visual Studio 缓存了其中的信息,这些信息可能不再正确。)
  • 启动 Visual Studio。当它打开时,它是空白的;不要执行通常的操作,即转到“文件”->“打开”->“项目/解决方案...”,而是执行以下操作:
  • 转到 Git -> Local Repositories... -> Open Local Repository...,系统将提示您选择一个文件夹。
  • 选择您的 monorepo 的文件夹。 Visual Studio 的解决方案资源管理器将显示“打开解决方案、文件夹或其他项目”,并显示“文件夹视图”项目,后面是 monorepo 下所有解决方案的列表。
  • 选择其中一种解决方案。

就是这样,你做到了。

然后,您可以启动另一个 Visual Studio 实例,并打开相同的 monorepo,但选择不同的解决方案。

Visual Studio 任一实例的“Git Changes”选项卡现在将显示一棵树,该树从 monorepo 的根开始,并包含在该根下更改的所有文件,无论它们位于哪个解决方案中。

© www.soinside.com 2019 - 2024. All rights reserved.