首页 > 解决方案 > 从 Azure 构建管道中排除项目

问题描述

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

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

如何在我的管道中排除建筑项目?

标签: visual-studioazure-devops

解决方案


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

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

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

在此处输入图像描述

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

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

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

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

您可以查看此答案相应的文档。我的 devops 任务设置(无需指定构建目标):

在此处输入图像描述

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

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

在此处输入图像描述

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

在此处输入图像描述

在此处输入图像描述

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

一旦远程仓库获得更改:

在此处输入图像描述

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

在此处输入图像描述

所有这些变通办法在发布之前都已经在我这边进行了测试。


推荐阅读