Я признаюсь, что я новичок в Xamarin и кросс-платформенной разработке, поэтому извиняюсь, если это кажется тривиальным вопросом, но я пытался разобраться в нем несколько вечеров.Проект Xamarin не находит SkiaSharp в Android или Windows
У меня есть базовое приложение Xamarin Forms, которое работает в Windows 8.1, Windows UWP и Android. Он использует SkiaSharp для некоторой базовой графики (на основе примера Skia).
Он работал на всех трех платформах, но мне пришлось удалить и повторно добавить пакеты Xamarin в проект, и я не могу заставить SkiaSharp нормально работать в Windows или Android. Я получаю BadImageFormatException:
Additional information: Could not load file or assembly 'SkiaSharp, Version=1.56.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)
Я получаю это исключение в x86, x64 и любых конфигураций процессоров для 8.1 версии Windows, так и с Android версии.
Если я запускаю проект UWP, он отлично работает.
Соответствующая структура проекта:
- MyProj.XMForms (Portable) - PCL, содержащие основные Xamarin.Forms App, MainPage с StackLayout, содержащего раму с MyView и MyView, который содержит сетку с SKCanvasView ,
- MyProj.Windows (Windows 8.1) - оболочка - просто содержит пустое приложение и главную страницу, которая загружает приложение MyProj.XMForms.
- MyProj.UWP (Universal Windows) - оболочка - просто содержит пустое приложение и главную страницу, которая загружает приложение MyProj.XMForms.
- MyProj.Droid (Android) - оболочка - просто содержит MainActivity, загружающую приложение MyProj.XMForms.
Все проекты Пакеты NuGet имеют Xamarin.Forms 2.3.3.180, SkiaSharp 1.56.0 и SkiaSharp.Views.Forms 1.56.0. MyProj.Droid также имеет SkiaSharp.Views (никто из других не примет его).
Я обнаружил https://github.com/mono/SkiaSharp/issues/190 и добавил <ShouldIncludeNativeSkiaSharp>true</ShouldIncludeNativeSkiaSharp>
к csproj без каких-либо различий.
Я попытался удалить и повторно добавить пакеты SkiSharp NuGet.
Что мне не хватает?
Спасибо,
Ian
спасибо. Полезно, чтобы список подтвержденных зависимостей был подтвержден. К сожалению, это был не ответ для меня - я уже проверил трижды, а затем перекрестно проверил проект Android из SkiaSharp FormsSample - у меня определенно был тот же набор Nugets. –
Полезно знать о ограничении Windows 8 - я задавался вопросом, почему не было образца для этого, когда Xamarin Forms поддерживал его. Академик для меня действительно, так как я планирую использовать собственные формы Windows для общих компьютеров Windows, но это меня исказило ... –