1

我正在使用 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

现在我在解决方案中添加了一个我想从构建中排除的天蓝色函数项目,因为最后一个项目是使用 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

有任何想法吗?

4

2 回答 2

1

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

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

于 2020-05-09T10:02:28.200 回答
1

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

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

在此处输入图像描述

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

 - task: DotNetCoreCLI@2
     inputs:
       command: build
       projects: |
         **\*.csproj
         !**\azurefunction.csproj
于 2020-05-11T10:00:29.893 回答