我承认我对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项目中运行它,它就完美地工作。
相关项目结构:
我有一个基本的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