如何在 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?
我正在尝试使用 DevOps 构建管道和单独的发布管道从我们的 Git 存储库在我们的 DevOps 服务器上部署 Blazor WASM 托管应用程序。
该项目由一个服务器项目和一个客户端项目组成(根据 VS 中的 Blazor WebAssembly 托管模板创建的标准结构)。
我使用了经典编辑器和 ASP.NET 核心模板并加载了站点,但控制台显示连接到服务器的 HTTP 错误,这让我觉得我部署的是客户端项目而不是服务器项目。我很确定情况就是这样,因为我的 Drop 工件包含一个名为 Client.zip.
的文件
如何更改此设置以改为部署服务器应用程序?
(已经有很多关于此的问题,例如 here,但是 none 的封面是经典编辑器方法)
这是让它为我工作的完整过程:
YAML 方法
我没试过这个,但是 muddybeard210 在 GitHub post Blazor WASM ASP.NET Core Hosted Azure Devops Only Publishes Client/Shared folder 上的这个 post 给了我关于如何让它工作的线索经典编辑器。
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/SkillBoard.Server.csproj'
arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
It is important to note that publishWebProjects is set to false. This
is because "If true, the task will try to find the web projects in the
repository and run the publish command on them. Web projects are
identified by presence of either a web.config file or wwwroot folder
in the directory." - Azure devops info button
Due to this being true originally, it was selecting Client every time
because the CLIENT project has a wwwroot folder. With
publishWebProjects set to false, you can specify a particular project
with projects and use the traditional wild card characters.
经典编辑器方法
在VS中的pipelines中,选择添加一个新的pipeline:
点击底部的'Use the classic editor' link
在下一页选择 repo
选择ASP.NET核心模板:
这让你得到这个:
然后,您只需更改发布任务的一些设置:
在该任务上,取消勾选 'Publish web projects',以便显示项目路径框:
然后点击link图标并选择Unlink:
最后以 **/YourWebServerProject.csproj
:
格式输入您的服务器项目的路径
就是这样。当您 运行 管道时,您的 drop 现在应该包含一个名为 Server.zip 的文件,而不是 Client.zip:
我正在尝试使用 DevOps 构建管道和单独的发布管道从我们的 Git 存储库在我们的 DevOps 服务器上部署 Blazor WASM 托管应用程序。
该项目由一个服务器项目和一个客户端项目组成(根据 VS 中的 Blazor WebAssembly 托管模板创建的标准结构)。
我使用了经典编辑器和 ASP.NET 核心模板并加载了站点,但控制台显示连接到服务器的 HTTP 错误,这让我觉得我部署的是客户端项目而不是服务器项目。我很确定情况就是这样,因为我的 Drop 工件包含一个名为 Client.zip.
的文件如何更改此设置以改为部署服务器应用程序?
(已经有很多关于此的问题,例如 here,但是 none 的封面是经典编辑器方法)
这是让它为我工作的完整过程:
YAML 方法
我没试过这个,但是 muddybeard210 在 GitHub post Blazor WASM ASP.NET Core Hosted Azure Devops Only Publishes Client/Shared folder 上的这个 post 给了我关于如何让它工作的线索经典编辑器。
- task: DotNetCoreCLI@2 displayName: Publish inputs: command: 'publish' publishWebProjects: false projects: '**/SkillBoard.Server.csproj' arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
It is important to note that publishWebProjects is set to false. This is because "If true, the task will try to find the web projects in the repository and run the publish command on them. Web projects are identified by presence of either a web.config file or wwwroot folder in the directory." - Azure devops info button
Due to this being true originally, it was selecting Client every time because the CLIENT project has a wwwroot folder. With publishWebProjects set to false, you can specify a particular project with projects and use the traditional wild card characters.
经典编辑器方法
在VS中的pipelines中,选择添加一个新的pipeline:
点击底部的'Use the classic editor' link
在下一页选择 repo
选择ASP.NET核心模板:
这让你得到这个:
然后,您只需更改发布任务的一些设置:
在该任务上,取消勾选 'Publish web projects',以便显示项目路径框:
然后点击link图标并选择Unlink:
最后以 **/YourWebServerProject.csproj
:
就是这样。当您 运行 管道时,您的 drop 现在应该包含一个名为 Server.zip 的文件,而不是 Client.zip: