问题描述
我正在尝试使用 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:
点击底部的“使用经典编辑器”链接
在下一页选择 repo
选择 ASP.NET Core 模板:
这让你明白:
然后,您只需要更改发布任务的一些设置:
在该任务上,取消勾选“发布网络项目”,以便显示项目路径框:
然后点击链接图标并选择取消链接:
最后以 **/YourWebServerProject.csproj
格式输入服务器项目的路径:
就是这样。当您运行管道时,您的 drop 现在应该包含一个名为 Server.zip 的文件,而不是 Client.zip: