现在我已经创建了一个 Azure Pipeline,它也构建了解决方案。
但卸载的项目仍在建设中。
Azure Devops Pipeline 和 VS IDE 都会调用msbuild.exe
建造。使用 msbuild 构建解决方案时,它实际上正在运行命令msbuild xx.sln /t:build ...
.
检查内容xx.sln
文件(解决方案文件)我们可以发现它定义了解决方案中项目的定义。这就是为什么如果你构建解决方案,all这些项目将会建成。这是预期行为在构建整个解决方案时。示例 .sln 文件:
VS IDE 的神奇之处在于,它可以在构建整个解决方案时排除已卸载的项目。 IDE 将检查卸载的项目并在构建整个解决方案时跳过它们,它的优点是unloading project
IDE 中的行为不会修改您的解决方案文件。 (对于下面的解决方案很重要Git 版本控制).
总结:预计构建解决方案将构建所有项目。当我们在VS中卸载项目时,此操作不会影响我们的源解决方案文件或项目文件。 VS会自动跳过卸载的项目,这是IDE的独特功能。 (卸载是一个用户界面操作在 VS 中,它对 .sln/.xxproj 文件没有影响)
要排除要在 Azure Devops 中构建的项目:
1.构建整个解决方案时指定要构建的项目。 (它不会改变任何文件,因此不会影响版本控制)
你可以检查这个答案 and 相应文件。我的devops任务设置(无需指定构建目标):
2.Exclude projects from solution configuration
(不推荐)或create a new configuration that excludes specific projects
(受到推崇的)。解决方案配置是在解决方案文件(sln)中定义的,因此这种方式会对源代码控制产生影响。
从解决方案配置中排除项目(不推荐):
创建排除特定项目的新配置:
相关文件here。我建议您可以通过 VS IDE 进行更改,然后将提交推送到远程存储库。如果您不熟悉 msbuild 和 sln 文件,这会很复杂,所以我不建议您自己这样做。让 IDE 为您完成这项工作。
一旦远程仓库获得更改:
我们可以在 DevOps 中构建解决方案customrelease
排除的配置ProjectA
and ProjectB
代替release
包含所有项目的配置。
所有这些解决方法在发布之前都已在我这边进行了测试。