Azure App Service已安装依赖列表查询及.NET 8迁移依赖缺失问题
查看Azure App Service Linux依赖项及.NET 8升级后libjpeg62缺失问题解决
查看已安装依赖项的方法
- 通过SSH连接到App Service实例:在Azure门户的App Service页面进入「开发工具」>「SSH」,打开终端后执行
apt list --installed,即可列出所有已安装的Debian系统包。若要过滤特定库(比如jpeg相关),用dpkg -l | grep libjpeg更高效。 - 输出到日志文件:若无法直接使用SSH,可修改App Service的启动命令,例如设置为
apt list --installed > /home/site/wwwroot/dependencies.log && dotnet YourApp.dll。部署完成后,通过Kudu的「文件管理器」进入/home/site/wwwroot就能查看生成的日志文件。 - Kudu终端快速检查:在Kudu的「调试控制台」>「Bash」中,同样可以执行上述命令,实时查看依赖情况。
解决.NET 8升级后libjpeg62缺失的问题
.NET 8的Azure App Service Linux镜像基于更新的Debian版本,默认不再预装libjpeg62,这是导致图形渲染类NuGet包失效的核心原因。可通过以下方式修复:
- 自定义启动脚本安装依赖:
在项目根目录创建startup.sh脚本,内容如下:
随后在Azure门户的App Service「配置」>「常规设置」里,将「启动命令」改为#!/bin/bash apt-get update && apt-get install -y libjpeg62-turbo -qq dotnet YourApp.dll./startup.sh(注意替换YourApp.dll为你的实际应用程序集名称)。 - 使用自定义Docker镜像:
若需要更稳定的环境,避免每次部署重复安装依赖,可构建自定义镜像。Dockerfile示例:
将镜像推送到Azure容器注册表(ACR)后,再部署到App Service即可。FROM mcr.microsoft.com/dotnet/aspnet:8.0 RUN apt-get update && apt-get install -y libjpeg62-turbo && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "YourApp.dll"] - 升级NuGet包:
部分图形渲染类NuGet包已更新适配.NET 8和新版本libjpeg库,尝试将相关包升级至最新稳定版,可能无需额外安装系统依赖就能解决问题。
内容的提问来源于stack exchange,提问作者Steven Pfeifer
相关产品推荐
相关产品推荐

