Azure CI流水线构建报错:依赖项目位于不同仓库,使用经典编辑器无YAML
根因说明
本地Visual Studio构建正常是因为你的开发环境同时存在项目A和项目B的代码,且两个项目的相对路径与VS中配置的项目依赖路径完全匹配。你当前的CI流水线默认仅拉取关联的项目A的BitBucket仓库,构建服务器环境中不存在项目B的代码,因此触发找不到项目的报错。
经典编辑器下的解决方案
以下方案均无需使用YAML配置,直接在经典可视化编辑器中操作即可:
方案1:配置流水线拉取多仓库(最适配当前场景)
- 打开项目A对应的经典流水线,点击「编辑」进入配置页面
- 找到顶部的「获取源」配置卡片,当前默认选中的是绑定的项目A的BitBucket仓库
- 点击「添加存储库」,选择BitBucket源,完成授权后选择项目B对应的仓库,配置项目B的拉取路径,注意路径要和本地两个项目的相对路径完全一致:比如你本地项目A存放在
\code\projA、项目B存放在\code\projB,就将流水线中项目B的拉取路径设置为和项目A平级的projB目录 - 保存流水线后重新触发构建,构建环境会同时拉取两个仓库的代码,路径匹配后就能正常识别项目B依赖
方案2:将项目B转为NuGet包引用(适合公共依赖场景)
如果项目B是通用公共组件,更推荐用包管理的方式解耦依赖:
- 本地将项目B打包为NuGet包,推送到Azure DevOps内置的工件源或者团队私有的NuGet源
- 在项目A中移除原有的项目引用,改为引用源上发布的项目B NuGet包
- 在经典流水线的构建步骤前,添加「NuGet还原」步骤,配置还原源为你推送包的私有源即可正常构建
方案3:拉取Git子模块(适用于已配置子模块的场景)
如果你已经将项目B设为项目A仓库的Git子模块:
- 打开「获取源」配置卡片,找到「子模块」配置项,勾选「Checkout 子模块」即可,流水线拉取项目A代码时会自动同步项目B的子模块代码
内容的提问来源于stack exchange,提问作者user3193557
相关产品推荐
相关产品推荐

