单个 WCF 项目不会在 YAML Azure DevOps 构建管道下创建构建工件

Single WCF project will not create build artifact under YAML Azure DevOps Build Pipeline

我们的构建管道包括一个 YML 模板,用于构建我们所有的 WCF 服务和 Web 应用程序。对于除一个之外的所有 WCF 服务,它的工作就像一个魅力。但是,对于这一 WCF 服务,在发布工件阶段的构建日志中会生成以下输出:

##[warning]Directory 'D:\azagent\A2_work81\a' is empty. Nothing will be added to build artifact 'drop'.

我们的构建阶段调用一个单独的 YML 文件,其中包含以下内容来构建和发布项目:

  - task: VSBuild@1
    displayName: "Build ${{ parameters.solution}}"
    inputs:
      solution: ${{ parameters.solution }}
      msbuildArgs: >
        /p:DeployOnBuild=true 
        /p:WebPublishMethod=Package
        /p:PackageAsSingleFile=true
        /p:SkipInvalidConfigurations=true
        /p:IgnoreDeployManagedRuntimeVersion=true 
        /p:PackageLocation="$(build.ArtifactStagingDirectory)"
      platform: ${{ parameters.buildPlatform }}
      configuration: ${{ parameters.buildConfiguration }}

  - task: PublishBuildArtifacts@1
    displayName: "Publish Build Artifact"
    inputs:
      PathtoPublish: "$(Build.ArtifactStagingDirectory)"
      ArtifactName: "drop"
      publishLocation: "Container"

如前所述,这对所有其他 WCF 项目都非常有效,并生成构建工件。但是,对于有问题的 WCF 服务,不会生成构建工件。我们观察到 D:\azagent\A2_work81\a 文件夹中没有创建 ZIP 文件(理论上,Build.ArtifactStagingDirectory)。

我尝试了很多推荐的解决方案来解决这个问题,但都没有效果。

  1. VSBuild@1 任务和 PublishBuildArtifacts@1 任务之间添加 CopyFiles@2 任务确实将文件放在 Build.ArtifactStagingDirectory 中,但它们不是 ZIP 文件。此外,部署任务(稍后在管道中)失败,因为 drop 文件夹中不存在 ZIP 文件。
  2. 添加 /p:OutDir=$(Build.ArtfactStagingDirectory) 似乎产生了某种工件,但部署任务仍然失败,声称无法在 drop 文件夹中找到 ZIP 文件。
  3. 我创建了一个仅包含 WCF 项目的测试存储库(因为它通常包含在包含它和 Web 应用程序的解决方案中)和 运行 针对该存储库的管道。没有创建构建工件。

最终,我似乎无法让这个项目生成构建工件。

我在这里错过了什么?我可以提供哪些进一步的信息来帮助您帮助我解决这个问题?

根据 Microsoft's Developer Community,自 2019 年 8 月以来,这是一个已知问题。使用 YAML 管道构建的 WCF 服务不会生成构建工件。因此,它们无法通过 YAML 管道进行部署。

截至目前,Microsoft 既没有修复程序也没有解决方法。