2017-01-30 30 views
1

我承認我是Xamarin和跨平臺開發新手,所以如果這似乎是一個微不足道的問題,我很抱歉,但我一直試圖深入到底現在幾個晚上。Xamarin項目未能在Android或Windows中找到SkiaSharp

我有一個基本的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和爲Windows 8.1版本的任何CPU的配置,以及Android版本。

如果我運行它的UWP項目,它完美的作品。

相關項目結構:

  • MyProj.XMForms(便攜式) - PCL包含芯Xamarin.Forms應用,用的MainPage含有具有MyView的一個幀一個StackLayout和MyView的含有網格與SKCanvasView 。
  • MyProj.Windows(Windows 8.1) - 包裝 - 只包含一個空應用程序和一個加載MyProj.XMForms應用程序的MainPage。
  • MyProj.UWP(通用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包。

我缺少什麼?

感謝,

伊恩

回答

0

如果你看一下異常消息,有這樣一行:

參考組件不應該被加載執行。

這意味着您還沒有在應用程序項目中安裝SkiaSharp NuGets。確保所有應用程序安裝了SkiaSharpSkiaSharp.ViewsSkiaSharp.Views.Forms NuGets。核心項目只需要SkiaSharpSkiaSharp.Views.Forms NuGets。

另外,Windows 8。X目前不支持因Skia的限制:https://github.com/mono/SkiaSharp/issues/20

+0

謝謝。確定依賴關係列表是有用的。不幸的是,這並不是我的答案 - 我已經三重檢查過,然後從SkiaSharp FormsSample交叉檢查Android項目 - 我肯定已經有了完全相同的一組Nugets。 –

+0

對於瞭解Windows 8的限制很有用 - 我想知道爲什麼當Xamarin Forms支持它時沒有一個樣本。因爲我打算爲普通Windows計算機使用本地Windows表單,所以對我來說確實是一個學術問題,但是這讓我感到困擾...... –

0

好吧,我已經成功地得到Android的工作,採取從SkiaSharp FormsSample的Android項目和更換調用

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

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

我原來的項目肯定包括了所有相同NuGets這一個,我還沒有確定他們主要的區別WH這意味着這個工作,我沒有,但至少我現在有一個解決方案,在Android和UWP的作品。

相關問題