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

Linux环境Azure Functions安装依赖时libgdiplus加载失败问题求助

解决方案

方案1:切换DevExpress跨平台渲染引擎(最优,无需修改容器依赖)

该方案从根源移除libgdiplus依赖,适配所有Linux环境,仅需DevExpress版本≥22.2:

  • 安装DevExpress.Drawing.Skia NuGet包到你的C#函数项目
  • 在函数程序启动入口(通常为Program.cs的最顶部)添加如下代码:
DevExpress.Drawing.Internal.DXDrawingEngine.ForceSkia();
  • 重新发布项目即可,无需修改任何启动命令或容器配置

方案2:修复内置堆栈启动命令

你此前的启动命令存在包名拼写错误,且未配置动态库查找路径,按如下步骤修改即可:

  1. 进入Azure门户→函数应用→配置→应用设置,添加2条配置项:
    • LD_LIBRARY_PATH = /usr/lib/x86_64-linux-gnu:/usr/lib
    • WEBSITES_ENABLE_APP_SERVICE_STORAGE = true
      保存后等待应用重启
  2. 进入常规设置→堆栈设置→启动命令,替换为如下内容:
apt-get update && apt-get install -y software-properties-common && add-apt-repository -y 'deb http://deb.debian.org/debian bullseye main' && apt-get update && apt-get install -y --no-install-recommends libc6-dev libgdiplus libicu-dev libharfbuzz0b libfontconfig1 libfreetype6 libpango-1.0-0 libpangocairo-1.0-0 fontconfig && ldconfig && dotnet MyFunctionApp.dll

注意:内置堆栈启动时默认拥有root权限,无需添加sudo前缀

方案3:自定义Docker容器部署(最稳定)

如果上述方案都无效,使用自定义容器将依赖提前固化到镜像中,避免每次启动动态安装的权限/网络问题:

  1. 在函数项目根目录新增Dockerfile,内容如下:
# 基于官方Azure Functions .NET 4 LTS镜像构建
FROM mcr.microsoft.com/azure-functions/dotnet:4-appservice AS base
# 切换root用户安装系统依赖
USER root
RUN apt-get update \
    && apt-get install -y --no-install-recommends software-properties-common \
    && add-apt-repository -y 'deb http://deb.debian.org/debian bullseye main' \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
        libc6-dev \
        libgdiplus \
        libicu-dev \
        libharfbuzz0b \
        libfontconfig1 \
        libfreetype6 \
        libpango-1.0-0 \
        libpangocairo-1.0-0 \
        fontconfig \
        ttf-mscorefonts-installer \
    # 清理冗余缓存缩小镜像体积
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
# 配置动态库软链接,适配.NET默认查找路径
RUN ln -s /usr/lib/x86_64-linux-gnu/libgdiplus.so /usr/lib/libgdiplus.so \
    && ln -s /usr/lib/x86_64-linux-gnu/libgdiplus.so.0 /usr/lib/libgdiplus.so.0 \
    && ldconfig
# 切回默认运行用户保证安全
USER www-data
WORKDIR /home/site/wwwroot
# 拷贝本地发布后的函数文件到容器
COPY . .
# 配置函数运行环境变量
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true
  1. 将项目发布为Docker镜像,推送到任意容器镜像仓库(如Azure容器注册表、Docker Hub)
  2. 进入Azure函数应用→部署中心,选择容器部署模式,拉取你构建好的镜像即可

内容的提问来源于stack exchange,提问作者Mark Z.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:54:03