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

tom*_*dox 6 c# build-pipeline azure-devops blazor blazor-webassembly

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

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

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

我如何更改它以部署服务器应用程序?

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

tom*_*dox 7

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

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)'
Run Code Online (Sandbox Code Playgroud)

请务必注意,publishWebProjects 设置为 false。这是因为“如果为 true,则任务将尝试在存储库中查找 Web 项目并对它们运行发布命令。Web 项目通过目录中存在的 web.config 文件或 wwwroot 文件夹来标识。” - Azure DevOps 信息按钮

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

经典编辑器方法

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

新建管道对话框

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

在下一页选择 repo

选择源对话框

选择 ASP.NET Core 模板:

选择模板对话框

这让你得到这个:

流水线编辑页面

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

管道编辑页面 - 编辑发布任务

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

项目文本框的路径

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

取消链接

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

项目路径

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

神器掉落内容