代码之家  ›  专栏  ›  技术社区  ›  Christian

Xamarin.uwp应用程序未启动,因为无法加载“Microsoft.Graphics.Canvas.UI.Xaml.CanvasImageSource”

  •  0
  • Christian  · 技术社区  · 5 年前

    我正在开发一个android/ios/uwp xamarin.forms应用程序。最近几周,我主要研究android/ios应用程序。现在,我想在uwp中重新启动我的应用程序并得到错误信息:

    System.TypeLoadException
      HResult=0x80131522
      Message=Could not find Windows Runtime type 'Microsoft.Graphics.Canvas.UI.Xaml.CanvasImageSource'.
      Source=Xamarin.Forms.Platform.UAP
      StackTrace:
       at Xamarin.Forms.Platform.UWP.ImageRenderer.GetDesiredSize(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.Platform.UWP.Platform.GetNativeSize(VisualElement element, Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.Platform.UWP.WindowsBasePlatformServices.GetNativeSize(VisualElement view, Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.OnSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.Image.OnSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.OnMeasure(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.GetSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.Measure(Double widthConstraint, Double heightConstraint, MeasureFlags flags)
       at Xamarin.Forms.StackLayout.CalculateNaiveLayout(LayoutInformation layout, StackOrientation orientation, Double x, Double y, Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.StackLayout.CalculateLayout(LayoutInformation layout, Double x, Double y, Double widthConstraint, Double heightConstraint, Boolean processExpanders)
       at Xamarin.Forms.StackLayout.OnSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.OnMeasure(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.GetSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.Layout.GetSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.Measure(Double widthConstraint, Double heightConstraint, MeasureFlags flags)
       at Xamarin.Forms.ScrollView.OnSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.OnMeasure(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.GetSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.Layout.GetSizeRequest(Double widthConstraint, Double heightConstraint)
       at Xamarin.Forms.VisualElement.Measure(Double widthConstraint, Double heightConstraint, MeasureFlags flags)
       at Xamarin.Forms.Layout.LayoutChildIntoBoundingRegion(VisualElement child, Rectangle region)
       at Xamarin.Forms.Page.LayoutChildren(Double x, Double y, Double width, Double height)
       at Xamarin.Forms.Page.UpdateChildrenLayout()
       at Xamarin.Forms.Page.OnSizeAllocated(Double width, Double height)
       at RA_Krypt.MainPage.OnSizeAllocated(Double width, Double height) in C:\Users\Christian\source\repos\Xamarin_RaKrypt\RA-Krypt\RA-Krypt\MainPage.xaml.cs:line 27
       at Xamarin.Forms.Page.OnChildMeasureInvalidated(VisualElement child, InvalidationTrigger trigger)
       at Xamarin.Forms.Page.OnChildMeasureInvalidated(Object sender, EventArgs e)
       at Xamarin.Forms.VisualElement.InvalidateMeasureInternal(InvalidationTrigger trigger)
       at Xamarin.Forms.VisualElement.set_IsNativeStateConsistent(Boolean value)
       at Xamarin.Forms.Platform.UWP.VisualElementRenderer`2.OnControlLoaded(Object sender, RoutedEventArgs args)
    

    我的应用程序根本无法启动。我已经重建了我的项目,重新启动了我的电脑,这有时有助于与Xamarin,但我仍然卡住。我需要做什么才能让我的应用程序再次工作?

    1 回复  |  直到 5 年前
        1
  •  6
  •   Martin Zikmund    5 年前

    已报告并修复此错误,请参阅 this issue on GitHub .修复程序将包含在即将发布的xamarin.forms中。

    目前有解决办法。确保安装了最新版本的xamarin.forms。然后:

    如果需要支持秋季创建者更新(sdk 16299)

    1. 确保项目的最低版本设置为至少秋季创建者更新(16299)
    2. 安装 Win2D.uwp 从nuget打包到uwp项目
    3. 添加 <DisableWin2DPlatformCheck>true</DisableWin2DPlatformCheck> 到UWP项目的 csproj

    如果你能支持最小版本的sdk 17134

    1. 将UWP项目的最低版本设置为17134或更高版本
    2. 安装 win2d.uwp文件 从nuget打包到uwp项目