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

问题描述

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

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

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

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

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

解决方法

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

YAML 方法

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

- 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中的pipelines中,选择添加一个新的pipeline:

New pipeline dialog

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

在下一页选择 repo

Select a source dialog

选择 ASP.NET Core 模板:

Select a template dialog

这让你明白:

Pipeline edit page

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

Pipeline edit page - Editing Publish task

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

Path to project text box

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

Unlinking

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

Path to project

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

Contents of Artifact drop