0

我需要构建、测试和部署一个 .net core web api 应用程序。我希望这篇题为“构建、测试和部署 .NET Core 应用程序”的文章能够帮助我构建、测试和部署应用程序,但由于某种原因我没有得到它。

我有一个简单的 .net core 3.1 web api 应用程序。
我想在 Azure AppService 上构建并发布到一个名为“api”的虚拟目录。我更喜欢使用 webdeploy 发布,但如果不可能,我会使用任何可行的方法。

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

No package found with specified pattern: 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
4

1 回答 1

0

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

见下文:

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

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

有关详细信息,请参阅文档Azure 应用服务部署任务

于 2020-05-21T02:47:22.897 回答