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

Azure DevOps Pipeline中AzureSignTool提示command not found问题

解决Azure DevOps Ubuntu代理中AzureSignTool找不到的问题

核心原因

在Ubuntu这类Linux系统中,dotnet tool install --global会把工具安装到$HOME/.dotnet/tools目录,但Azure DevOps的Ubuntu代理启动bash时用了--noprofile --norc参数(从你的日志可看到),不会加载用户配置里的PATH,导致这个工具路径没被加入当前会话的环境变量,直接输工具名称就会找不到。而Windows系统中dotnet全局工具路径会自动加入系统PATH,所以你之前用Windows代理时没这个问题。

解决方案(任选其一)

方案1:用dotnet tool run执行签名(最可靠)

不需要依赖PATH,直接通过dotnet工具调用,修改你的签名任务:

- task: CmdLine@2
  displayName: 'Sign Application'
  inputs:
    script: |
      dotnet tool run AzureSignTool sign -kvu $(SigningVaultURL) -kvi $(SigningClientId) -tr $(SigningTimeStamp) -kvt $(SigningTennentId) -kvs $(SigningClientSecret) -kvc $(SigningCertName) -v $(Build.SourcesDirectory)/src/Project/bin/Release/Project.exe

方案2:手动添加工具路径到PATH

在执行签名命令前,把dotnet全局工具目录临时加入当前会话的PATH:

- task: CmdLine@2
  displayName: 'Sign Application'
  inputs:
    script: |
      export PATH="$HOME/.dotnet/tools:$PATH"
      AzureSignTool sign -kvu $(SigningVaultURL) -kvi $(SigningClientId) -tr $(SigningTimeStamp) -kvt $(SigningTennentId) -kvs $(SigningClientSecret) -kvc $(SigningCertName) -v $(Build.SourcesDirectory)/src/Project/bin/Release/Project.exe

方案3:本地安装工具(替代全局安装)

把工具安装到指定本地目录,直接用完整路径调用:

- task: DotNetCoreCLI@2
  displayName: 'Install AzureSignTool'
  inputs:
    command: custom
    custom: tool
    arguments: 'install azuresigntool --tool-path $(Build.BinariesDirectory)/tools'
- task: CmdLine@2
  displayName: 'Sign Application'
  inputs:
    script: |
      $(Build.BinariesDirectory)/tools/AzureSignTool sign -kvu $(SigningVaultURL) -kvi $(SigningClientId) -tr $(SigningTimeStamp) -kvt $(SigningTennentId) -kvs $(SigningClientSecret) -kvc $(SigningCertName) -v $(Build.SourcesDirectory)/src/Project/bin/Release/Project.exe

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:43