Использование SkiaSharp 1.68.0 с .NET Core 2.2 в Linux и получение этой ошибки при попытке использовать декодирование в потоке памяти jpeg (тот же код работает в Windows):
System.TypeInitializationException: The type initializer for 'SkiaSharp.SKAbstractManagedStream' threw an exception. ---> 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_managedstream_set_delegates(IntPtr pRead, IntPtr pPeek, IntPtr pIsAtEnd, IntPtr pHasPosition, IntPtr pHasLength, IntPtr pRewind, IntPtr pGetPosition, IntPtr pSeek, IntPtr pMove, IntPtr pGetLength, IntPtr pCreateNew, IntPtr pDestroy)
at SkiaSharp.SKAbstractManagedStream..cctor()
--- End of inner exception stack trace ---
at SkiaSharp.SKAbstractManagedStream..ctor(Boolean owns)
at SkiaSharp.SKManagedStream..ctor(Stream managedStream, Boolean disposeManagedStream, Boolean owns)
at SkiaSharp.SKManagedStream..ctor(Stream managedStream, Boolean disposeManagedStream)
at SkiaSharp.SKCodec.WrapManagedStream(Stream stream)
at SkiaSharp.SKCodec.Create(Stream stream, SKCodecResult& result)
at SkiaSharp.SKCodec.Create(Stream stream)
at SkiaSharp.SKBitmap.Decode(Stream stream)
ВнутреннийСамое большое сообщение об ошибке: «Нет такого файла или каталога», что странно, так как я декодирую поток памяти.Это работает в Windows, и это работало в Linux до того, как я обновил до .NET Core 2.2 и последней версии SkiaSharp.
Я попытался установить переменную LD_DEBUG env, как предложено в сообщении об ошибке, но это не помогло.Не уверен, что установить его на самом деле.Пробовал «все», но это не привело к более подробному журналу.
Найден поток , который предлагает установить SkiaSharp.NativeAssets.Linux в качестве решения, но, к сожалению, это не помогло,Нужно ли ориентироваться на среду выполнения Linux-x64 при сборке / публикации?Пробовал разные комбинации, но не смог обнаружить никакой разницы.(Я создаю с помощью dotnet cli в Docker-файле на Linux поверх ssh с putty. Практически по умолчанию Docker-файл, сгенерированный VS: последний)
Другим предложением было установить libSkiaSharp.so
вручную, а такжеapt-get install libfontconfig1
, но, к сожалению, apt-get недоступен в Synology DSM.