ASP.NET Core Web API使用SkiaSharp时无法加载libSkiaSharp异常怎么解决
SkiaSharp在ASP.NET Core Web API中找不到libSkiaSharp的解决方案
这个报错是Linux部署环境下的典型问题,Web项目的Nuget原生资产复制逻辑和桌面项目不同,可按以下步骤修复:
1. 安装对应平台的原生资产包
默认安装的SkiaSharp主包不包含平台特定的原生库,需要手动补充安装对应运行环境的Nuget包:
- Linux环境优先安装
SkiaSharp.NativeAssets.Linux.NoDependencies,该包已内置所有依赖,不需要额外安装系统级库 - 如果需要依赖系统原生库的版本,安装
SkiaSharp.NativeAssets.Linux - Windows部署安装
SkiaSharp.NativeAssets.Win32,macOS部署安装SkiaSharp.NativeAssets.macOS
2. 强制复制原生资产到输出目录
在项目的.csproj文件中添加如下配置,强制Nuget将所有原生依赖复制到编译输出目录:
<PropertyGroup> <!-- 复制所有锁定的Nuget资产到输出目录 --> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!-- 显式开启SkiaSharp原生资产复制 --> <SkiaSharpCopyNativeAssets>true</SkiaSharpCopyNativeAssets> </PropertyGroup>
3. Linux环境可选依赖安装
如果没有安装无依赖版本的原生包,需要先安装系统级依赖:
# Debian/Ubuntu 系列 apt update && apt install -y libfontconfig1 libfreetype6 libharfbuzz0b # CentOS/RHEL 系列 yum install -y fontconfig freetype harfbuzz
4. 验证修复效果
重新编译项目后,检查输出目录中是否存在libSkiaSharp.so(Linux)、libSkiaSharp.dll(Windows)或libSkiaSharp.dylib(macOS),存在即表示原生资产已正常复制,启动项目调用SkiaSharp相关逻辑即可正常运行。
内容的提问来源于stack exchange,提问作者Victor Chelaru
相关产品推荐
相关产品推荐

