从 Azure 构建管道中排除项目

Iva*_*ono 1 visual-studio azure-devops

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

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

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

Lan*_*SFT 5

现在我已经创建了一个 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包含所有项目的配置。

在此处输入图片说明

在发布之前,所有这些解决方法都在我这边进行了测试。