如何使用Azure DevOps Pipeline发布WinForms .NET Desktop应用程序?

时间:2019-08-21 09:59:18

标签: winforms azure-devops build-pipeline

我正在尝试确定WinForms桌面应用程序的Azure DevOps生成管道,问题是我无法发布该应用程序,也不能确定生成工件。

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

我选择了.NET Desktop模板来配置持续集成(CI)管道。它正在还原NuGet并成功构建解决方案。

现在,我想发布WinForms .NET Desktop应用程序并生成生成工件。我已经尝试执行以下任务(如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 Desktop应用程序并生成生成工件的方法。

主要目标是将发布应用程序与桌面应用程序的安装和发布文件夹一起保存在我的计算机上的任何位置。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

  

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

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

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

enter image description here

如果构建因与证书或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

希望这会有所帮助。