【问题标题】:Single WCF project will not create build artifact under YAML Azure DevOps Build Pipeline单个 WCF 项目不会在 YAML Azure DevOps Build Pipeline 下创建构建工件
【发布时间】:2022-01-28 15:17:49
【问题描述】:

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

##[警告]目录 'D:\azagent\A2_work\1381\a' 为空。不会添加任何内容来构建工件“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_work\1381\a 文件夹(理论上是Build.ArtifactStagingDirectory)中没有创建 ZIP 文件。

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

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

最终,我所做的一切似乎都无法让这个项目生成构建工件。

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

【问题讨论】:

  • 您是否尝试过在 Visual Studio 本地发布项目并检查工件是否可用?我还建议您检查项目的构建配置值和参数值是否匹配。
  • 如果 Artifacts 制作良好,并且如果您只想压缩它,您可以使用 Archive File Task docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/…
  • @AnnamalaiD 我可以在 Visual Studio 中本地发布项目,它会创建一个文件夹,其中包含将事物部署到 Web 服务器所需的所有文件。但是,它不会在构建管道中这样做。

标签: azure-devops yaml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2021-06-20
    • 2021-05-05
    • 2020-04-06
    • 2019-11-18
    相关资源
    最近更新 更多