You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor WASM在DevOps YAML流水线构建失败求助

Blazor WASM DevOps流水线构建报错:文件被其他进程占用

问题详情

基于Blazor WASM样板项目搭建Azure DevOps YAML流水线构建环境,构建任务配置如下:

- task: Bash@3
  displayName: Build CMS
  inputs:
    targetType: 'inline'
    script: 'dotnet publish $(solution) -f net7.0 -c WebRelease'

本地构建完全正常,但DevOps服务器端构建时持续出现文件占用错误:

C:\Program Files\dotnet\sdk\7.0.306\Sdks\Microsoft.NET.Sdk.BlazorWebAssembly\targets\Microsoft.NET.Sdk.BlazorWebAssembly.6_0.targets(238,5): error : The process cannot access the file 'D:\a\1\s...\Client\obj\Release\net7.0\build-gz\ZmnGp8l6.gz' because it is being used by another process. [D:\a\1\s...\Client....csproj]

移除Commons项目后,错误转移到...client.dll文件,未预期会出现此类多进程访问冲突。

可行解决方案

  • 禁用并行构建:Blazor WASM默认并行构建可能触发文件访问竞争,修改发布命令添加串行构建参数:

    dotnet publish $(solution) -f net7.0 -c WebRelease --no-parallel
    
  • 前置清理构建目录:在发布任务前添加清理步骤,彻底清除旧构建文件,避免残留进程占用:

    - task: Bash@3
      displayName: Clean Build Directory
      inputs:
        targetType: 'inline'
        script: 'dotnet clean $(solution) -c WebRelease --verbosity minimal'
    
    - task: Bash@3
      displayName: Build CMS
      inputs:
        targetType: 'inline'
        script: 'dotnet publish $(solution) -f net7.0 -c WebRelease'
    
  • 排查重复构建任务:检查流水线配置,确认没有重复触发同一项目的构建任务,并行执行的任务会同时访问同一目录引发冲突。

  • 升级.NET SDK版本:当前使用的7.0.306版本存在Blazor WASM并行构建的已知文件锁Bug,升级至.NET 7最新补丁版本(如7.0.401)或直接迁移到.NET 8,新版本已修复相关问题。

  • 指定独立输出目录:将发布输出指向单独目录,避免与中间obj目录的文件访问重叠:

    dotnet publish $(solution) -f net7.0 -c WebRelease -o $(Build.ArtifactStagingDirectory)/publish
    

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:55:58