.NET 6项目拆分至两个Azure DevOps仓库的方案咨询
两种方案分析与建议
一、保留单仓库,配置独立流水线
这是最直接且低复杂度的方案,完全不需要调整仓库结构:
- 针对两个解决方案分别创建Azure DevOps流水线,构建阶段指定各自的解决方案路径即可,比如:
- Solution1流水线执行:
dotnet build ./Solution1/Solution1.sln - Solution2流水线执行:
dotnet build ./Solution2/Solution2.sln
- Solution1流水线执行:
- 共享的
Lib、Packages目录留在原仓库,两个流水线构建时都能直接访问,无需额外处理依赖 - 可通过Azure DevOps的路径触发规则优化构建触发逻辑:
- 给Solution1的流水线设置触发路径:
Solution1/**、Lib/**、Packages/**,只有这些目录变更时才触发构建 - 给Solution2的流水线设置触发路径:
Solution2/**、Lib/**、Packages/**
- 给Solution1的流水线设置触发路径:
- 优势:共享代码修改无需跨仓库同步,维护成本低;CI/CD配置简单,无需额外依赖拉取步骤
- 劣势:若两个解决方案迭代节奏差异极大,可能会有少量不必要的构建触发(但通过路径规则可大幅缓解)
二、拆分为两个业务仓库+共享仓库
如果两个解决方案属于独立业务、需分团队维护,可考虑拆分:
- 将共享的
Lib目录单独抽成一个独立仓库,打包为NuGet包上传到Azure DevOps私有NuGet源,两个业务仓库通过NuGet引用该包 Packages目录若为第三方依赖,直接通过NuGet还原即可,无需共享;若为自定义工具包,同样可打包为NuGet包或用Git子模块引用(但子模块在流水线中需额外配置拉取步骤,复杂度较高)- 优势:两个业务仓库完全独立,权限管理更精细,迭代互不干扰
- 劣势:共享代码修改需先更新独立仓库、再在两个业务仓库更新依赖,流程繁琐;CI/CD需配置依赖拉取步骤,增加维护复杂度
最终建议
优先选择保留单仓库并配置独立流水线,除非两个解决方案是完全独立的业务、未来有明确的分团队维护需求。这种方案既能满足分别部署的要求,又能最小化共享代码的维护成本。
内容的提问来源于stack exchange,提问作者jaykzoo
相关产品推荐
相关产品推荐

