在Android或Windows中,Xamarin项目无法找到SkiaSharp。

4
我承认我对Xamarin和跨平台开发都很陌生,如果这个问题看起来很琐碎,请见谅,但我已经花了几个晚上试图解决它。
我有一个基本的Xamarin Forms应用程序,可以在Windows 8.1、Windows UWP和Android上运行。它使用SkiaSharp进行一些基本的图形处理(基于Skia示例)。
它在所有三个平台上都能运行,但是我不得不从项目中删除并重新添加Xamarin包,并且我无法让SkiaSharp在Windows或Android上正常运行。我得到了一个BadImageFormatException:
“详细信息:未能加载文件或程序集'SkiaSharp,Version = 1.56.0.0,Culture = neutral,PublicKeyToken = 0738eb9f132ed756'或其某个依赖项。引用程序集不应该被加载用于执行。它们只能在反射加载器上下文中加载。(来自HRESULT的异常:0x80131058)”
我在Windows 8.1版本的x86、x64和Any CPU配置以及Android版本中都遇到了这个异常。
如果我在UWP项目中运行它,它就完美地工作。
相关项目结构:
  • MyProj.XMForms(便携式)- 包含核心Xamarin.Forms应用程序的PCL,带有包含MyView的Frame的MainPage和包含SKCanvasView的Grid的MyView。
  • MyProj.Windows(Windows 8.1)- 包装器 - 只包含一个空应用程序和一个MainPage,该页面加载MyProj.XMForms应用程序。
  • MyProj.UWP(通用Windows)- 包装器 - 只包含一个空应用程序和一个MainPage,该页面加载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

2个回答

5
如果你查看异常信息,会发现有这样一行:
“不应加载参考程序集以执行。”
这意味着您尚未将SkiaSharp NuGets安装到应用程序项目中。确保所有应用程序都安装了SkiaSharp、SkiaSharp.Views和SkiaSharp.Views.Forms NuGets。核心项目只需要SkiaSharp和SkiaSharp.Views.Forms NuGets。
此外,由于Skia存在限制,目前不支持Windows 8.x:https://github.com/mono/SkiaSharp/issues/20

谢谢。确认依赖项列表非常有用。不幸的是,这对我来说并不是答案——我已经三次检查过了,然后又与SkiaSharp FormsSample的Android项目进行了交叉检查——我已经确保拥有完全相同的Nuget集合。 - Ian Brockbank
了解Windows 8的限制很有用——当Xamarin Forms支持它时,我想知道为什么没有一个示例。对我来说是学术性的,因为我计划在普通Windows电脑上使用本地Windows表单,但这一点一直困扰着我... - Ian Brockbank

0

好的,我已经成功让Android工作了,方法是从SkiaSharp FormsSample中获取Android项目,并将调用

LoadApplication(new SkiaSharpSample.FormsSample.Platform.App());

替换为

LoadApplication(new MyPortable.XamarinForms.App());

我的原始项目肯定包含了与此相同的NuGets,但我还没有确定这个项目能够工作而我的不能的关键区别,但至少现在我有了一个在Android和UWP中都能工作的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接