Hello Aspose Support Team,
We are facing an issue when running our .NET Core 3.1 application on Linux.
The same application works fine on Windows, but after encountering a SkiaSharp error log, we added SkiaSharp native packages to our project.
After adding these packages and testing locally on Windows, everything works fine. However, on Linux, the application fails to load.
Environment Details
OS (Working): Windows 10
OS (Failing): Amazon Linux 2 (EC2)
.NET Version: .NET Core 3.1
Aspose Components:
Aspose.PDF 21.6.0
Aspose.Words 21.6.0
Aspose.Cells 21.6.0
Aspose.Email 21.6.0
Aspose.Imaging 21.6.0
Aspose.Slides.NET 21.6.0
Error Log
Oct 22 09:23:04 ip-10-12-16-28.us-east-2.compute.internal mis-wf[28314]: Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKObject' threw an exception.
Oct 22 09:23:04 ip-10-12-16-28.us-east-2.compute.internal mis-wf[28314]: ---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies.
In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable:
liblibSkiaSharp: cannot open shared object file: No such file or directory
at SkiaSharp.SkiaApi.sk_version_get_milestone()
at SkiaSharp.SkiaSharpVersion.get_Native()
at SkiaSharp.SkiaSharpVersion.CheckNativeLibraryCompatible(Boolean throwIfIncompatible)
at SkiaSharp.SKObject..cctor()
--- End of inner exception stack trace ---
at SkiaSharp.SKObject.DeregisterHandle(IntPtr handle, SKObject instance)
at SkiaSharp.SKObject.set_Handle(IntPtr value)
at SkiaSharp.SKNativeObject.Dispose(Boolean disposing)
at SkiaSharp.SKObject.Dispose(Boolean disposing)
at SkiaSharp.SKBitmap.Dispose(Boolean disposing)
at SkiaSharp.SKNativeObject.Finalize()
Project File (csproj)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Aspose.PDF" Version="21.6.0" />
<PackageReference Include="Aspose.Words" Version="21.6.0" />
<PackageReference Include="Aspose.Cells" Version="21.6.0" />
<PackageReference Include="Aspose.Email" Version="21.6.0" />
<PackageReference Include="Aspose.Imaging" Version="21.6.0" />
<PackageReference Include="Aspose.Slides.NET" Version="21.6.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.5" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.32" />
<!-- Added SkiaSharp packages -->
<PackageReference Include="SkiaSharp" Version="3.119.1" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="3.119.1" />
<PackageReference Include="SkiaSharp.NativeAssets.macOS" Version="3.119.1" />
<PackageReference Include="SkiaSharp.NativeAssets.Win32" Version="3.119.1" />
</ItemGroup>
</Project>
Behavior Summary
Windows: Application runs successfully after adding SkiaSharp packages.
Linux: Application fails to load after adding SkiaSharp packages.
If we revert the SkiaSharp package additions, the application loads again on Linux, but the original libSkiaSharp error reappears during file conversions.
Questions
Is there a known compatibility issue between Aspose 21.6.0 components and SkiaSharp 3.x on Linux?
What is the recommended way to configure SkiaSharp dependencies for Aspose.Slides / Aspose.Imaging on Linux?
Are there specific native libraries or environment variables required for proper SkiaSharp initialization on Linux?
Would upgrading to newer Aspose versions (e.g., 24.x) resolve this dependency issue?