2025/01/23

[ASP.NET Core] 解決 ASP.NET Core 在 Linux Container 出現無法載入 libSkiaSharp 相依性問題

前言

一直以來開發的 ASP.NET Core 專案都是在 Windows 環境執行。最近才開始接觸開發 ASP.NET Core 專案執行於 Docker Container 的開發環境,馬上就遇到處理圖片的問題。

在 Windows 的環境下處理圖片會用到 System.Drawing.Common,但在 Linux 環境下是不支援的。所以在 Linux 下的圖片處理改採用 SkiaSharp 的套件。

SkiaSharp 這個套件在 Windows 及 Linux 都可以用,在 Windows 的開發環境已有測試套過可以正常運作,沒想到在 Linux 環境下還是噴錯了。

環境

  • Docker Container (預設 ASP.NET Core 專案用的 base 我改用 aspnet:8.0-jammy-chiseled 可減少 image size)
  • .NET 8.0
  • NuGet 安裝套件: SkiaSharp 版本 3.116.1

問題

而在使用 SkiaSharp 處理圖片的過程中出現以下錯誤訊息:

An unhandled exception occurred while processing the request.
DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies.

解決方式

需要再安裝 SkiaSharp.NativeAssets.Linux.NoDependencies 套件

特此記錄一下,供未來翻查用