visual-studio - 从 Azure 构建管道中排除项目
问题描述
我有一个解决方案,其中有许多已卸载的项目。当我在本地构建解决方案时,显然没有构建卸载的项目。在配置管理器中,我什至无法为卸载的项目选择配置、平台、构建和部署选项。
现在我创建了一个 Azure Pipeline,它也构建了解决方案。但卸载的项目仍在建设中。
如何在我的管道中排除建筑项目?
解决方案
现在我创建了一个 Azure Pipeline,它也构建了解决方案。但卸载的项目仍在建设中。
Azure Devops Pipeline 和 VS IDE 都会调用msbuild.exe
构建。使用 msbuild 构建解决方案时,它实际上是在运行 command msbuild xx.sln /t:build ...
。
检查xx.sln
文件(解决方案文件)的内容,我们可以发现它定义了解决方案中项目的定义。这就是为什么如果您构建解决方案,所有这些项目都将被构建。这是构建整个解决方案时的预期行为。示例 .sln 文件:
在构建整个解决方案时排除已卸载的项目是 VS IDE 的魔力。IDE 将检查卸载的项目并在构建整个解决方案时跳过它们,它的优点是unloading project
IDE 中的行为不会修改您的解决方案文件。(对于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
不包含所有项目的配置ProjectA
而ProjectB
不是release
包含所有项目的配置来构建解决方案。
所有这些变通办法在发布之前都已经在我这边进行了测试。
推荐阅读
- python - 读取二进制文件时如何解决EOF错误
- java - 为什么 Gson.fromJson() 的 try/catch Exceptions 不起作用?
- php - 尝试在 PHP 中处理一些嵌套的嵌套数组
- azure - How do I properly use ForEach() statement of List?
- java - 没有字符串可以吗?
- javascript - Jquery serializeArray 中断然后继续
- javascript - 类函数在传递到快速路由器时会丢失上下文
- assembly - How to convert a binary integer number to a hex string?
- amp-html - AMP validator: reports errors while code should be perfectly ok
- ruby-on-rails - 给定一个字符串,确定它是否来自 .html_safe 调用?