如何在 Azure DevOps 上为发布服务器项目而不是客户端的 Blazor WebAssembly 托管应用程序创建构建管道?

Posted

技术标签:

【中文标题】如何在 Azure DevOps 上为发布服务器项目而不是客户端的 Blazor WebAssembly 托管应用程序创建构建管道?【英文标题】:How to create a build pipeline for Blazor WebAssembly Hosted app on Azure DevOps that publishes the server project not the client? 【发布时间】:2021-05-08 01:12:04 【问题描述】:

我正在尝试使用 DevOps 构建管道和单独的发布管道从我们的 Git 存储库在我们的 DevOps 服务器上部署 Blazor WASM 托管应用程序。

该项目由一个服务器项目和一个客户端项目组成(根据 VS 中的 Blazor WebAssembly 托管模板创建的标准结构)。

我使用了经典编辑器和 ASP.NET Core 模板并加载了站点,但控制台显示连接到服务器的 HTTP 错误,这让我觉得我部署的是客户端项目而不是服务器项目。我很确定是这种情况,因为我的 Drop 工件包含一个名为 Client.zip 的文件。

如何更改此设置以改为部署服务器应用程序?

(已经有很多问题,例如here,但没有一个涵盖经典编辑器方法)

【问题讨论】:

【参考方案1】:

这是让它为我工作的完整过程:

YAML 方法

我还没有尝试过,但是 muddybeard210 在 GitHub 上的帖子 Blazor WASM ASP.NET Core Hosted Azure Devops Only Publishes Client/Shared folder 为我提供了如何在经典编辑器中使用它的线索。

- task: DotNetCoreCLI@2
  displayName: Publish
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: '**/SkillBoard.Server.csproj'
    arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'

请务必注意,publishWebProjects 设置为 false。这 是因为“如果为真,任务将尝试在 存储库并在它们上运行发布命令。网络项目是 通过存在 web.config 文件或 wwwroot 文件夹来识别 在目录中。” - Azure devops 信息按钮

由于原来是这样,所以每次都选择Client 因为 CLIENT 项目有一个 wwwroot 文件夹。和 publishWebProjects 设置为 false,可以指定特定项目 与项目并使用传统的通配符。

经典编辑器方法

在VS中的管道中,选择添加新的管道:

点击底部的“使用经典编辑器”链接

在下一页选择回购

选择 ASP.NET Core 模板:

这样你就明白了:

然后,您只需要更改发布任务上的一些设置:

在该任务上,取消选中“发布网络项目”,以显示项目路径框:

然后点击链接图标并选择取消链接:

最后以**/YourWebServerProject.csproj 格式输入您的服务器项目的路径:

就是这样。当您运行管道时,您的 drop 现在应该包含一个名为 Server.zip 而不是 Client.zip 的文件:

【讨论】:

很好的答案@tomredox

以上是关于如何在 Azure DevOps 上为发布服务器项目而不是客户端的 Blazor WebAssembly 托管应用程序创建构建管道?的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure Devops 中发布成功时自动更改工作项状态

C# - 如何从 Azure DevOps 工作项列表反序列化 json?

如何在 azure devops server 2019 的新工作项 Web 布局中编程工作项水平选项卡?

合并 PR 后如何限制 Azure DevOps YAML 管道中的关联工作项?

如何在 Azure Devops 中检查某个日期的记录状态

Azure DevOps Server(TFS): 在Excel中解除服务器同步