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

Azure VM Scale Set中DevOps Agent执行dotnet restore失败排查

问题原因分析

你的自定义Azure VM Scale Set代理节点(Windows Server 2022 Azure Edition)默认未预装开发所需的.NET Core SDK和Node.js/npm。Azure托管代理为适配通用开发场景,会预先安装这类工具,但自定义VM镜像仅包含基础操作系统组件,因此之前在托管管道能正常运行的步骤,在自定义代理上会因依赖缺失失败:

  1. .NET SDK缺失:系统仅包含dotnet运行时(runtime),无开发工具包(SDK),导致dotnet restore这类SDK专属命令无法执行;
  2. npm未安装:npm是Node.js的附属工具,自定义VM未安装Node.js,自然无法识别npm命令。
解决方案

在Pipeline开头添加工具安装任务,明确指定所需版本,确保代理节点在执行构建前完成依赖部署:

1. 安装.NET Core SDK

使用UseDotNet@2任务指定项目实际依赖的SDK版本(替换为你项目对应的版本,比如6.x、7.x):

- task: UseDotNet@2
  displayName: '安装指定版本.NET Core SDK'
  inputs:
    packageType: 'sdk'
    version: '6.x' # 改为项目所需的SDK版本
    installationPath: $(Agent.ToolsDirectory)/dotnet

该任务会自动下载并安装指定SDK,后续的.NET Core Restore步骤即可正常识别SDK。

2. 安装Node.js(含npm)

使用NodeTool@0任务安装Angular CLI兼容的Node.js版本(比如Angular 16+推荐18.x):

- task: NodeTool@0
  displayName: '安装指定版本Node.js'
  inputs:
    versionSpec: '18.x' # 改为Angular CLI要求的Node.js版本

安装完成后,npm会自动加入系统环境变量,后续的npm install命令即可正常执行。

验证工具安装(可选)

添加验证步骤确认工具已正确部署,方便快速排查问题:

- script: |
    dotnet --list-sdks
    node --version
    npm --version
  displayName: '验证.NET和Node.js安装状态'
为什么之前的尝试无效?
  • NuGetAuthenticate@1和NuGetToolInstaller@1仅处理NuGet的认证与工具更新,和.NET SDK的安装无关;
  • 无参数的UseDotNet@2仅检查代理上已有的SDK,不会自动下载安装缺失版本;
  • ASP.NET Core Pipeline模板默认假设代理已预装SDK,因此在自定义代理上仍会失败。

内容的提问来源于stack exchange,提问作者Miro J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:55:02