我承认我是 Xamarin 和跨平台开发的新手,所以如果这似乎是一个微不足道的问题,我深表歉意,但我已经尝试了几个晚上了。
我有一个基本的 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)
我在 Windows 8.1 版本和 Android 版本的 x86、x64 和任何 CPU 配置中都遇到了这个异常。
如果我将它运行在 UWP 项目中,它会完美运行。
相关项目结构:
- MyProj.XMForms(便携式)- 包含核心 Xamarin.Forms 应用程序的 PCL、带有 StackLayout 的 MainPage(包含带有 MyView 的 Frame)以及包含带有 SKCanvasView 的 Grid 的 MyView。
- MyProj.Windows (Windows 8.1) - 包装器 - 仅包含一个空应用程序和一个加载 MyProj.XMForms 应用程序的 MainPage。
- MyProj.UWP (Universal Windows) - 包装器 - 仅包含一个空应用程序和一个加载 MyProj.XMForms 应用程序的 MainPage。
- MyProj.Droid (Android) - 包装器 - 只包含一个加载 MyProj.XMForms 应用程序的 MainActivity。
所有项目 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 包。
我错过了什么?
谢谢,
伊恩