从Azure构建管道中排除项目

时间:2020-09-30 12:55:40

标签: visual-studio azure-devops

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

现在,我已经创建了一个Azure管道,该管道还可以构建解决方案。但是卸载的项目仍在构建中。

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

1 个答案:

答案 0 :(得分:1)

现在,我已经创建了一个Azure管道,该管道还可以构建解决方案。 但是卸载的项目仍在构建中。

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

检查xx.sln文件(解决方案文件)的内容,我们发现它定义了有关解决方案中项目的定义。这就是为什么如果您构建解决方案,则会全部构建这些项目。这是构建整个解决方案时的预期行为。样本.sln文件:

enter image description here

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

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

要排除要在Azure Devops中构建的项目,请执行以下操作:

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

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

enter image description here

2。Exclude projects from solution configuration(不推荐)或create a new configuration that excludes specific projects(推荐)。解决方案配置在解决方案文件(sln)中定义,因此这种方式将对Source Control产生影响。

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

enter image description here

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

enter image description here

enter image description here

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

远程仓库获得更改后:

enter image description here

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

enter image description here

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