无法将dotnet核心Web API应用发布到Azure AppService

时间:2020-05-20 14:50:59

标签: azure azure-pipelines azure-pipelines-yaml

我需要构建,测试和部署.net核心Web api应用程序。我希望这篇标题为Build, test, and deploy .NET Core apps的文章能够帮助我构建,测试和部署该应用程序,但由于某种原因,我只是没有得到它。

我有一个简单的.net core 3.1 Web api应用程序。
我想在Azure AppService上将其生成并发布到名为“ api”的虚拟目录。 我宁愿使用webdeploy进行发布,但是如果不可能的话,我将使用任何可行的方法。

我在AzureRmWebAppDeployment任务上遇到的错误是:

未找到具有指定模式的软件包:D:\ a \ 1 \ s ***。zip
检查任务中提到的软件包是否在构建或上一阶段中作为工件发布并下载到当前的工作。

我在这里想念或做错了什么?

trigger:
- master

pool:
  vmImage: 'windows-latest'

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

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'
    feedsToUse: 'select'
    vstsFeed: 'Project/Feed'
    includeNuGetOrg: true

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"    /p:UseWPP_CopyWebApplication=true  /p:OutDir="$(build.artifactstagingdirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'


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


- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'SubscriptionName'
    appType: 'apiApp'
    WebAppName: 'MyWebAppName'
    VirtualApplication: 'api'
    UseWebDeploy: true

1 个答案:

答案 0 :(得分:1)

您已将构建工件输出到文件夹$(Build.ArtifactStagingDirectory)(即文件夹D:\a\1\a)中的VSBuild任务和dotnet publish任务中。因此,您需要将 AzureRmWebAppDeployment 任务的 Package 参数设置为$(Build.ArtifactStagingDirectory)/**/*.zip

见下文:

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'SubscriptionName'
    appType: 'apiApp'
    WebAppName: 'MyWebAppName'
    VirtualApplication: 'api'
    UseWebDeploy: true
    Package: '$(Build.ArtifactStagingDirectory)/**/*.zip'

如果您没有为 AzureRmWebAppDeployment 任务指定 Package 参数。默认值为$(System.DefaultWorkingDirectory)/**/*.zip,它使 AzureRmWebAppDeployment 任务在文件夹$(System.DefaultWorkingDirectory)(在构建代理中为文件夹D:\a\1\s)及其子文件夹中查找部署工件。由于您将构建工件输出到文件夹$(Build.ArtifactStagingDirectory),因此您看到错误No package found with specified pattern: D:\a\1\s***.zip

有关更多信息,请参见文档Azure App Service Deploy task