.net - 如何从 Azure DevOps Pipeline 上的构建解决方案步骤中排除项目
问题描述
我有一个这样的 .NET 多项目解决方案:
- 解决方案
- 项目1
- 项目2
- 项目4
我在我们的 DevOps 环境中有这个解决方案,我创建了一个管道,将使用 SonarQube(声纳云)对其进行分析。此管道包含以下步骤:
- SonarQube 分析
- 使用 NuGet 4.4.1
- NuGet 还原
- 在 SonarQube 上准备分析
- 构建解决方案
- 测试组件
- 运行代码分析
- 发布质量门结果
我的问题是在构建解决方案步骤上。我的一些项目是我想从这一步中排除的报告或 sql 项目,它们确实使构建失败。我一直在寻找互联网并尝试了一些方法,例如:
在将某些项目设置为不构建的解决方案中创建新配置
添加“-target:Project1;Project2;” (这导致了管道上的错误)
我已经尝试了许多其他的事情,这些事情不一定会在没有运气的情况下被记录下来。有没有人在 SonarQube 分析中成功配置构建解决方案以从 .NET 解决方案中排除某些项目?
解决方案
如果要使用 MSBuild 从构建中排除项目,可以使用解决方案过滤器文件来实现它。更多详情请参考https://docs.microsoft.com/en-us/visualstudio/msbuild/solution-filters?view=vs-2019
{
"solution": {
"path": "..\\..\\Documents\\GitHub\\msbuild\\MSBuild.sln",
"projects": [
"src\\Build.OM.UnitTests\\Microsoft.Build.Engine.OM.UnitTests.csproj"
]
}
}
此外,您还可以像@rogerio 所说的那样,使用 .Net Core 任务一个一个地构建项目。但请注意,如果您的 .NET Core 或 .NET Standard 构建依赖于 NuGet 包,请确保添加此步骤的两份副本:一份使用 restore 命令,一份使用 build 命令。
推荐阅读
- python - 使用 aiohttp 和 asyncio 时编写单元测试
- php - 在 laravel 中显示 localhost:8000/phpmyadmin 时出错
- javascript - 对象的变量在事件处理程序中未定义
- windows - 验证 SSL 证书
- mysql - GROUP_CONCAT() 内的 CONCAT() 计数
- php - 有没有办法用 mysqli 演示 SQL 注入?
- python - 您如何在 tkinter 中拉伸条目以适应屏幕?
- matlab - MATLAB GUI 句柄
- angularjs - 可调整大小处理撤消重做功能中的重复问题
- azure - 存储文件以从 Service Fabric 应用程序流式传输的最快方法?