【问题标题】:Exclude projects from Azure build pipeline从 Azure 构建管道中排除项目
【发布时间】:2020-09-30 12:55:40
【问题描述】:

我有一个解决方案,我有许多已卸载的项目。当我在本地构建解决方案时,显然没有构建卸载的项目。在配置管理器中,我什至无法为卸载的项目选择配置、平台、构建和部署选项。

现在我创建了一个 Azure Pipeline,它也构建了解决方案。但卸载的项目仍在建设中。

如何排除管道中的构建项目?

【问题讨论】:

  • 在 azure devops 管道中,我们不能排除要构建的项目。但是我们可以在构建任务的arguments输入中指定要构建的项目。

标签: visual-studio azure-devops


【解决方案1】:

现在我创建了一个 Azure Pipeline,它也构建了解决方案。 但卸载的项目仍在建设中。

Azure Devops Pipeline 和 VS IDE 都会调用 msbuild.exe 进行构建。使用 msbuild 构建解决方案时,实际上是在运行命令 msbuild xx.sln /t:build ...

检查xx.sln文件(解决方案文件)的内容,我们可以发现它定义了解决方案中项目的定义。这就是为什么如果您构建解决方案,所有这些项目都将被构建。这是构建整个解决方案时的预期行为。 .sln 文件示例:

在构建整个解决方案时排除已卸载的项目是 VS IDE 的魔力。 IDE 将检查卸载的项目并在构建整个解决方案时跳过它们,它的优点是 IDE 中的 unloading project 行为不会修改您的解决方案文件。 (对于Git版本控制下的解决方案很重要)。

总结:预计构建解决方案将构建所有项目。当我们在 VS 中卸载项目时,此操作不会影响我们的源解决方​​案文件或项目文件。 VS 会自动跳过卸载的项目,这是 IDE 独有的功能。 (卸载是VS中的UI动作,对.sln/.xxproj文件没有影响)

排除要在 Azure Devops 中构建的项目:

1.在构建整个解决方案时指定要构建的项目。 (不改变任何文件,不影响版本控制)

您可以查看this answercorresponding document。我的 devops 任务设置(无需指定构建目标):

2.Exclude projects from solution configuration(不推荐)或create a new configuration that excludes specific projects(推荐)。解决方案配置在解决方案文件(sln)中定义,因此这种方式会影响源代码管理。

从解决方案配置中排除项目(不推荐):

创建排除特定项目的新配置:

相关文档here。我建议您可以通过 VS IDE 进行更改,然后将提交推送到远程仓库。如果您不熟悉 msbuild 和 sln 文件,这很复杂,所以我不建议您自己这样做。让 IDE 为您完成这项工作。

一旦远程仓库获得更改:

我们可以使用不包括ProjectAProjectBcustomrelease 配置在devops 中构建解决方案,而不是包含所有项目的release 配置。

所有这些变通方法在发布之前都经过了我的测试。

【讨论】:

  • 感谢您的详细回答。我会选择选项 1,因为它更清楚。
  • 很高兴知道它有帮助:)
  • 嗨 Lance - 一些写作技巧,如果可以的话,可以为编辑们节省一些修复这些问题的工作,而不是您的许多答案:(1)在某事后添加解释性括号的地方,一个空格在左括号之前(像这样),以便浏览器知道如何正确换行; (2)粗体的过度使用使事情变得更难阅读而不是更容易; (3) 代码格式化不是一般的高亮,在专有名词上也不需要; (4) 你不需要邀请读者让你知道如果某些东西不起作用——他们应该已经知道了。
  • 选项 1 也是我的解决方案,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2021-12-21
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多