如何在 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 布局中编程工作项水平选项卡?