【问题标题】:How to publish WinForms .NET Desktop application with Azure DevOps Pipeline?如何使用 Azure DevOps Pipeline 发布 WinForms .NET 桌面应用程序?
【发布时间】:2019-12-26 13:57:04
【问题描述】:

我正在尝试为 WinForms 桌面应用程序创建 Azure DevOps 构建管道,但问题是我无法发布应用程序,也无法创建构建工件。

我创建了一个 WinForms 桌面应用程序并尝试在 Azure DevOps 中创建持续集成 (CI) 管道。

我已选择 .NET 桌面模板来配置持续集成 (CI) 管道。它正在恢复 NuGet 并成功构建解决方案。

现在我想发布 WinForms .NET 桌面应用程序并生成构建工件。我已经尝试过以下任务(如https://developercommunity.visualstudio.com/content/problem/337714/can-build-code-but-release-pipeline-says-no-artifa.html 中所述)

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

以下是我完整的 yml 代码:

trigger:
- master

pool:
  vmImage: 'windows-latest'

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

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

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

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(System.DefaultWorkingDirectory)\DesktopApp\bin\'
    Contents: '**'
    TargetFolder: '$(System.ArtifactsDirectory)'

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

它无法生成我可以下载或用于发布管道的工件。

需要帮助我找不到如何发布 WinForms .NET 桌面应用程序和生成构建工件。

主要目标是将发布应用程序与桌面应用程序的设置和发布文件夹保存在我机器上的任何位置。

谁能帮帮我?

【问题讨论】:

  • 这是一个简单的问题...您是在创建还是将构建输出复制到暂存目录?我们可以查看您完整的构建 yaml 文件以查看您是否将编译输出输出到 Build.ArtifactStagingDirectory 中吗?请记住,PublishBuildArtifacts 任务只是将该目录中的文件复制到目标并将其与构建摘要相关联。
  • @Reza Aghaei 感谢回复通过发布管道在我机器上的任何位置应用程序。
  • @Antebios 感谢您的回复,我可以从 bin 发布文件夹复制构建,该文件夹可以从工件下载,但我想发布 WinForms 桌面应用程序,希望将其发布为工件。我已经编辑了我的问题并添加了我的 yml 代码。我想我需要添加发布任务,但我找不到我的 yml 的发布任务模板或代码。

标签: winforms azure-devops build-pipeline


【解决方案1】:

我想发布 WinForms 桌面应用程序并希望将其发布为工件,我可以下载并保存已发布的应用程序,并通过发布管道在我的机器上的任何位置设置桌面应用程序

如果您想发布 WinForms 桌面应用程序,以便您可以在任何位置下载并保存已发布的应用程序以及桌面应用程序的设置,您需要发布发布的输出,而不是构建。

因此,要解决此问题,您需要在构建项目时向 MSBuild 提供“/target:Publish”参数。这是 Azure Devops 中的样子:

如果构建失败并出现与过期证书或 pfx 文件相关的错误,请参阅 other blog post on importing the required certificate on the build server at build-time,其中涉及在 MSBuild 步骤之前再添加一个“Import-PfxCertificate.ps1”构建步骤。

这是一个很棒的文档,展示了如何Continuously Deploy Your ClickOnce Application From Your Build Server

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2022-11-02
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多