【问题标题】:How to build multiple interdependent Visual Studio solutions in Azure DevOps如何在 Azure DevOps 中构建多个相互依赖的 Visual Studio 解决方案
【发布时间】:2019-03-15 16:09:00
【问题描述】:

我们有几个 Visual Studio 解决方案,它们之间存在项目依赖关系。

在 TFS 2015 中尊重项目依赖关系非常容易,我们只需将解决方案的有序列表添加到构建定义中。

但是,这在 DevOps 中是如何完成的?我可以将解决方案作为单独的构建任务添加到 Azure 管道中,但任务似乎无法访问先前构建的输出,因此会出现二进制引用错误。

有没有办法将解决方案构建串在一起,以便每个构建都可以访问先前构建的输出?

【问题讨论】:

  • 可以导入前面构建的工件...(不确定这是否是所有情况下的最佳方法/实用方法,这就是为什么这是评论而不是答案)
  • 也许在微服务领域并不需要分层的解决方案?即 - 每个解决方案都应该是独立的,因此无需为给定的管道构建多个解决方案。

标签: azure azure-devops


【解决方案1】:

如何在 Azure DevOps 中构建多个相互依赖的 Visual Studio 解决方案

有很多方法可以做到这一点,但不幸的是它没有最佳答案。因为最好的解决方案始终是拥有一个存储库。

要解决此问题,您可以:

  • 将依赖项目的.dll 文件添加到 NuGet 包。上传到一个提要,例如VSTS提要:Package Management in VSTS and TFS,然后在构建过程中恢复包(这是我们使用的方式)。

  • Download Build Artifacts 任务添加到构建定义以下载先前构建的工件。您也可以通过 PowerShell 调用 Builds REST API 来获取构建工件。

  • 如果是Git仓库,可以考虑使用Git SubmodulesGit Subtree

  • 如果您使用的是 TFVC 存储库,您可以通过在构建定义的 Get Sources 部分指定额外的 Workspace 映射来获取 Extensions 项目(直接指定,可以单击…选择)

希望这会有所帮助。

【讨论】:

  • 具有多个构建(例如,每个服务一个)的单个存储库会遇到相同的问题。
  • @GertvandenBerg,是的,如果引用的项目在另一个解决方案中,您仍然会遇到此问题,因为 VS/MSBuild 无法从当前解决方案构建项目。您需要先构建引用的项目,然后将 dll 文件复制到引用项目的 bin 文件夹中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2015-05-29
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多