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

DevOps部署.NET 8项目至Linux容器Azure Web Apps路径及Mono依赖问题

.NET8项目Pipeline部署问题解答

一、压缩包路径解析错误的解决办法

你看到的Content/D_C/a/1/s/是Azure Pipeline代理的工作目录绝对路径,这是因为打包时没指定正确的输出目录,把构建机上的完整路径打包进去了。解决步骤:

  • 在Pipeline的dotnet publish步骤中,添加--output参数指定相对输出目录,比如:
    dotnet publish -c Release -o ./publish
    
  • 后续打包操作只针对./publish目录,这样生成的压缩包就不会包含构建机的绝对路径,部署到Linux容器就能正常解析。

二、为啥ubuntu-24.04构建主机需要Mono?

虽然你的项目只目标net8.0,但如果Pipeline里用了旧版任务(比如NuGetCommand、VSBuild),这些任务即使处理.NET Core项目,也可能依赖Mono完成跨平台兼容操作;另外ubuntu-24.04的默认Pipeline模板可能残留了需要Mono的配置。
解决办法:

  • 换成纯.NET Core专属任务,比如用DotNetCoreCLI任务替代旧的NuGet/VSBuild任务,完全基于.NET SDK运行,不需要Mono。
  • 若一定要保留原有任务,可在Pipeline开头加一步安装Mono的脚本:
    sudo apt-get update && sudo apt-get install -y mono-complete
    

三、使用Windows虚拟机构建是否可行?

完全可行。Windows构建机可以正常编译net8.0跨平台项目,生成的部署包同样能在Linux容器中运行。需要注意:

  • 同样要在dotnet publish时指定相对输出目录,避免把Windows的绝对路径打包进去,保证部署到Linux时路径解析正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:29:54