Xamarin.Forms iOS在具有自定义控件的XAML页面上崩溃

问题描述 投票:0回答:2

我正在开发一个Xamarin.Forms项目,我最近将共享项目从PCL升级到了.NETStandard。

那时,我遇到了来自我的几个UI XAML文件的构建问题,错误是:

无法解析程序集:'MyAssembly,Version 0.0.0.0,Culture = neutral,PublicKeyToken = null'

发现问题文件是那些引用自定义XAML控件的文件。在网上找到几个有类似问题的人之后,我最终发现我可以通过为XamlCompilationOptionsCompile这些页面设置Skip来解决这个问题。该项目现在为iOS和Android构建。

Android版本正常运行,但是当其中一个页面因为存在自定义控件而尝试加载时,iOS版本崩溃,并出现如下错误:

Xamarin.Forms.Xaml.XamlParseException ...在xlmns clr-namespace中找不到类型shared.SharedControl:...

有没有人遇到过这个问题,如果有的话,你解决了吗?是代码问题还是Xamarin / Visual Studio Mac错误?

理想情况下,我不想将这些页面的XamlCompilationOptions设置为Skip,但无论哪种方式,我都不明白它为什么会影响iOS而不是Android。

c# ios xamarin xamarin.forms visual-studio-mac
2个回答
0
投票

首先,XamlCompilationOptions.Compile表示在构建应用程序时为类或项目编译XAML。当应用程序在设备上运行时,XamlCompilationOptions.Skip会执行相同的操作。

另外,我建议您可以执行以下步骤:

  1. 删除并重新生成所有共享文件
  2. 从App.xaml中删除;汇编:xxx
  3. 清洁并再次建造。

这里有一个类似的主题,你指的是Xamarin.Forms.Xaml.XamlParseException has been thrown

PS:有一个关于how to Upgrade PCL to .NET Standard Class Library的链接


0
投票

您需要在使用之前加载该程序集。在Xaml它没有加载,只是尝试到达,并崩溃,如果它没有加载。在使用它之前,您需要通过调用方法来加载程序集,或者创建一个属于MyAssembly的对象。

应该有一个Init方法来组装初始化事物。你应该打电话给它。

© www.soinside.com 2019 - 2024. All rights reserved.