netCore 中各DLL引用了 SkiaSharp.dll的问题
今天在使用 NPOI 2.8.0的时候,这版本是引用了 SkiaSharp.dll 3.119.2的,运行一直不通过。通过查询资料。SkiaSharp是要显示安装的,部署到服务器上也要显示安装。
如果项目中只有 NPOI 间接依赖 SkiaSharp,但 NuGet 没有正确把 native 库复制到输出目录,
通过 NuGet单独安装了SkiaSharp对应的版本后,本机调式代码可以正常使用了,但是发布到 windows 2012服务器上还是不行,提示
Unable to load DLL \'libSkiaSharp\' or one of its dependencies: 找不到指定的模块:
# 针对 .NET Core / .NET 5+ / .NET 8+ Install-Package SkiaSharp Install-Package SkiaSharp.NativeAssets.Win32 # Windows # 或 Linux 容器用:SkiaSharp.NativeAssets.Linux
安装后清理重新生成(删除 bin 和 obj 文件夹,再 Ctrl+Shift+B)。
表格
| 场景 | 推荐做法 |
|---|---|
| .NET 6/8/10 新项目 | 显式安装 SkiaSharp + SkiaSharp.NativeAssets.Win32,清理重建 |
| .NET Framework 4.x | 检查 libSkiaSharp.dll 是否在输出目录,手动复制或加 Post-Build |
| 不想用 SkiaSharp | 降级 NPOI 到 2.7.2 |
| 版本冲突 | 加 bindingRedirect 重定向到实际安装版本 |
- Windows Server 2012 R2相对较旧,升级到Windows Server 2016/2019会带来更好的支持和兼容性,尤其是图形和硬件加速方面。
浙公网安备 33010602011771号