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

Azure DevOps用Linux VMSS代理部署Nuget包缺失Mono的解决方案问询

Nuget推送缺失Mono问题解决方案

优先推荐:无需安装Mono的替代方案

你当前使用的VMSS代理已经预装.NET 5 SDK,可直接使用.NET CLI自带的dotnet nuget push命令完成Nuget包推送,完全不需要依赖Mono,直接替换原有Nuget推送任务即可从根源避开报错,是成本最低的解决方案。
对应YAML配置示例:

- task: DotNetCoreCLI@2
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: '<替换为你的VSTS Feed ID>'

方案1:仅在流水线环节临时安装Mono

如果你必须使用依赖Mono的旧版Nuget推送任务,不需要修改VMSS的基础配置,只需在Nuget推送任务之前新增一个Bash执行任务,在当前作业的代理环境中临时安装Mono即可。该方案适合你无VMSS管理权限、仅少数流水线需要使用Mono的场景。
Ubuntu系统下的安装任务YAML示例:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      sudo apt update -y
      sudo apt install -y apt-transport-https dirmngr gnupg ca-certificates
      sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
      # 下方Ubuntu版本代号需对应代理系统版本,20.04为focal、22.04为jammy
      echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
      sudo apt update -y
      sudo apt install -y mono-devel
  displayName: '临时安装Mono运行时'

方案2:修改VMSS配置预装Mono

如果该代理池的大量流水线都需要依赖Mono执行任务,建议修改VMSS的自定义镜像配置,将Mono的安装步骤写入镜像初始化脚本中,重新发布VMSS节点后,所有新启动的代理节点都会预装Mono,不需要每次流水线执行时重复安装,可节省构建执行时间。该方案需要你拥有VMSS的管理权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:06