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

Azure Release中运行dotnet命令未上报错误的技术求助

解决Azure Pipelines中dotnet运行dll异常但任务成功的问题

核心原因

Azure Pipelines任务默认根据脚本最后一条命令的退出码判断成败,若dotnet database.dll抛出异常时未返回非零退出码,或脚本中前序命令(如7z)覆盖了退出码,会导致任务误判为成功。另外failOnStandardError: true仅针对输出到stderr的内容触发失败,若dll将异常输出到stdout,该设置无效。

具体修复步骤

  • 强制捕获dotnet命令的退出码:在脚本中显式检查dotnet执行结果,失败时主动返回非零码给runner。修改后的脚本如下:

    7z x Database.zip
    dotnet database.dll
    EXIT_CODE=$?
    if [ $EXIT_CODE -ne 0 ]; then
      exit $EXIT_CODE
    fi
    

    其中$?获取上一条dotnet命令的退出码,非零时直接退出脚本,传递错误码给任务runner。

  • 确保异常输出到stderr:若自定义dll抛出异常时输出到stdout,需修改dll代码,将错误信息写入标准错误流(stderr),让failOnStandardError: true能触发任务失败。

  • 调整任务配置(可选):若正常操作也会输出内容到stderr(如7z的警告),可移除failOnStandardError: true,仅依赖退出码判断任务成败,避免误触发失败。

修改后的完整任务配置示例:

- task: AzureCLI@2
  displayName: 'Run DbUp'
  inputs:
    azureSubscription: ...
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
     7z x Database.zip
     dotnet database.dll
     EXIT_CODE=$?
     if [ $EXIT_CODE -ne 0 ]; then
       exit $EXIT_CODE
     fi
    workingDirectory: '$(System.DefaultWorkingDirectory)/database'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:52:07