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

ASP.NET Core 3.1自托管GitHub Action发布时nupkg被进程占用报错

解决自托管GitHub Action中VB.NET依赖项目nupkg文件被占用的问题

针对你遇到的nupkg文件被进程占用的发布错误,提供以下实用解决思路:

  • 禁用并行构建
    GitHub Action默认可能并行处理多项目构建,容易导致文件冲突。在发布命令中添加--no-parallel参数强制串行构建:

    dotnet publish --framework netcoreapp3.1 --runtime linux-x64 -c Release --no-parallel
    

    或者直接在VB.NET依赖项目的.vbproj文件中添加配置彻底禁用并行:

    <PropertyGroup>
      <DisableParallelBuild>true</DisableParallelBuild>
    </PropertyGroup>
    
  • 强制清理构建输出
    发布前彻底清理所有项目的构建缓存和输出文件,避免残留进程占用文件。在Workflow中添加前置步骤:

    # 清理解决方案所有项目的构建文件
    dotnet clean ./ApiProject.sln -c Release
    # 手动删除依赖项目和主项目的Release输出目录
    rm -rf ./Dep1/dep1/bin/Release ./Dep2/dep2/bin/Release ./ApiProject/bin/Release
    
  • 关闭依赖项目的自动打包
    错误提示来自NuGet打包任务,说明依赖项目可能开启了GeneratePackageOnBuild。如果不需要为依赖项目生成nupkg,直接在.vbproj中禁用该配置:

    <PropertyGroup>
      <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
    </PropertyGroup>
    

    这能避免发布过程中触发打包操作导致文件锁定。

  • 排查并清理残留进程
    在Linux自托管Runner上,之前的构建进程可能异常退出残留锁。在Workflow中添加进程检查与清理步骤:

    # 检查目标nupkg文件是否被占用
    lsof | grep "/home/gitrunner/actions-runner/_work/ApiProject/ApiProject/Dep1/dep1/bin/Release/dep1.1.0.0.nupkg" || echo "无进程占用目标文件"
    # 若有占用,杀掉对应的dotnet进程(可根据lsof结果精准杀PID)
    pkill -f "dotnet" || true
    
  • 使用干净的工作区
    在actions/checkout步骤中启用clean参数,确保每次Workflow运行都基于全新的代码目录:

    - uses: actions/checkout@v4
      with:
        clean: true
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:32:59