Azure-从管道中排除Azure功能项目

时间:2020-05-09 09:48:12

标签: azure asp.net-core azure-devops azure-pipelines azure-pipelines-yaml

我正在使用Azure管道部署Net Core 2.2应用

yml:

trigger:
- dev

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Debug'

steps:
- task: NuGetToolInstaller@1

- task: UseDotNet@2
  displayName: 'Use dotnet sdk 2.2'
  inputs:
    version: 2.x
    includePreviewVersions: false

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

# code coverage
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'


- script: dotnet -d ef -v migrations script --output $(Build.ArtifactStagingDirectory)\SQL\$(scriptName) --context $(dbContext)  --idempotent --project src\WorkFlowManager.EntityFrameworkCore\WorkFlowManager.EntityFrameworkCore.csproj

- task: PublishBuildArtifacts@1

现在我向解决方案中添加了一个我想从构建中排除的azure函数项目,因为最后一个项目是使用net core 3.1开发的。

我正在尝试使用类似的方法将其从管道中排除:

variables:
  solution: |
    '**/*.sln'
    '!**/*Project.AzureFunction*.csproj'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Debug'

但是该构建无法正常工作

Starting: VSBuild
==============================================================================
Task         : Visual Studio build
Description  : Build with MSBuild and set the Visual Studio version property
Version      : 1.166.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/visual-studio-build
==============================================================================
##[error]Solution not found using search pattern ''**\*.sln'
'!**\*WorkFlowManager.Functions.EnelGenerator*.csproj'
'.
Finishing: VSBuild

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

VSBuild@1任务用于构建VS解决方案。因此,您可以将新项目放在同一存储库中的单独解决方案中。

或者您可以在构建步骤中使用DotNetCoreCLI@2任务,该任务允许您指定单个项目或要构建的解决方案(请参见build multiple projects)。

答案 1 :(得分:1)

要从构建中排除azure功能项目,可以直接修改解决方案文件以排除azure功能项目。

对于以下示例,NUnitTest2.csproj在解决方案文件(.sln)中被注释掉,并且在构建解决方案时将其排除在外。您还可以查看this thread了解其他解决方法。

enter image description here

如果您不想修改解决方案文件。您可以使用DotNetCoreCLI @ 2任务来构建除如下所示的天蓝色函数项目以外的所有项目(使用!排除项目)。

 - task: DotNetCoreCLI@2
     inputs:
       command: build
       projects: |
         **\*.csproj
         !**\azurefunction.csproj