【问题标题】:How to exclude a project from build solution step on Azure DevOps Pipeline如何从 Azure DevOps Pipeline 上的构建解决方案步骤中排除项目
【发布时间】:2021-09-15 16:21:48
【问题描述】:

我有一个这样的 .NET 多项目解决方案:

  • 解决方案
    • 项目1
    • 项目2
    • 项目4

我在我们的 DevOps 环境中有这个解决方案,我创建了一个管道,将使用 SonarQube(声纳云)对其进行分析。此管道包含以下步骤:

  • SonarQube 分析
    • 使用 NuGet 4.4.1
    • NuGet 恢复
    • 在 SonarQube 上准备分析
    • 构建解决方案
    • 测试程序集
    • 运行代码分析
    • 发布质量门结果

我的问题在于构建解决方案步骤。我的一些项目是我想从这一步中排除的报告或 sql 项目,它们确实使构建失败。我一直在浏览互联网并尝试了一些方法,例如:

  1. 在解决方案中创建一个新配置,其中一些项目设置为不构建

  2. 添加“-target:Project1;Project2;” (这导致管道出错)

我已经尝试了许多其他事情,这些事情不一定没有记录在案,但没有运气。有没有人在 SonarQube 分析中成功配置 Build Solution 以从 .NET 解决方案中排除某些项目?

【问题讨论】:

    标签: .net azure-devops azure-pipelines


    【解决方案1】:

    由于MSBUILD 每次构建只接受一个项目规范,因此您需要有多个步骤,每个步骤构建一个特定的项目。

    假设您只想构建项目 1 和 2,并且您正在使用 .Net Core task

    你需要有两个这样的步骤:

    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*Project1.csproj'
    
    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*Project2.csproj'
    

    【讨论】:

      【解决方案2】:

      如果您想从使用 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"
          ]
        }
      }
      

      此外,您还可以使用 .Net Core 任务来一一构建项目,正如@rogerio 所说。但请注意,如果您的 .NET Core 或 .NET Standard 构建依赖于 NuGet 包,请确保添加此步骤的两份副本:一份使用 restore 命令,一份使用 build 命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 2020-06-29
        • 2021-04-16
        • 1970-01-01
        • 2020-06-13
        相关资源
        最近更新 更多