Blazor WASM DevOps CI流水线:如何单独发布指定UI项目
修复Azure DevOps CI流水线同时发布两个Blazor WASM项目的耗时问题
核心问题原因
当前的DotNetCoreCLI发布任务通过通配符**/EventManagement.UI.csproj匹配到了两个项目,同时触发发布,叠加Blazor WASM本身的程序集优化(尤其是AOT编译),导致整体耗时剧增。
具体修复步骤
- 拆分发布任务,为每个项目单独配置
放弃通配符匹配,明确指定每个项目的具体路径,同时禁用自动检测Web项目的功能,避免误触发。修改后的流水线代码如下:
variables: buildConfiguration: 'Release' buildVersion: 1.0.$(Build.BuildId) framework: net7.0 # 发布私有前端项目 - task: DotNetCoreCLI@2 displayName: 'Dotnet Publish FrontendPrivate' inputs: command: publish projects: '**/FrontendPrivate/EventManagement.UI.csproj' publishWebProjects: false arguments: '-c $(buildConfiguration) -f $(framework) -o $(Build.ArtifactStagingDirectory)/FrontendPrivate' # 发布公共前端项目 - task: DotNetCoreCLI@2 displayName: 'Dotnet Publish FrontendPublic' inputs: command: publish projects: '**/FrontendPublic/EventManagement.UI.csproj' publishWebProjects: false arguments: '-c $(buildConfiguration) -f $(framework) -o $(Build.ArtifactStagingDirectory)/FrontendPublic'
- 用具体路径替代通配符,确保每个任务只处理一个项目
- 设置
publishWebProjects: false,防止任务自动扫描并发布所有Web项目 - 分别输出到不同的子目录,方便后续生成独立的工件
- 优化Blazor WASM发布耗时(可选但效果显著)
- 关闭非必要的AOT编译:如果项目没有强制要求运行时性能,可在项目文件中移除
<RunAOTCompilation>true</RunAOTCompilation>配置,AOT编译会大幅增加发布时间 - 启用并行任务:在Azure DevOps中将两个发布任务设置为并行执行(可通过任务组或阶段配置并行),利用多资源同时处理两个项目
- 依赖缓存:单独配置
DotNetCoreCLI的restore任务,启用Azure DevOps的缓存功能,减少重复下载依赖的时间
内容的提问来源于stack exchange,提问作者smarteez
相关产品推荐
相关产品推荐

