Xamarin.Forms iOS 在带有自定义控件的 XAML 页面上崩溃
Xamarin.Forms iOS crash on XAML pages with custom controls
我正在开发一个 Xamarin.Forms 项目,为此我最近将共享项目从 PCL 升级到了 .NETStandard。
那时,我遇到了来自我的几个 UI XAML 文件的构建问题,错误是:
Failed to resolve assembly: ‘MyAssembly, Version 0.0.0.0,
Culture=neutral, PublicKeyToken=null’
发现问题文件是那些引用自定义 XAML 控件的文件。在网上找到几个有类似问题的人后,我最终发现我可以通过为那些从 Compile
到 Skip
的页面设置 XamlCompilationOptions
来解决这个问题。该项目现在为 iOS 和 Android.
构建
Android 版本正常工作,但是 iOS 版本在其中一个页面尝试加载时崩溃,由于存在自定义控件,并出现错误,例如:
Xamarin.Forms.Xaml.XamlParseException … Type shared.SharedControl not
found in xlmns clr-namespace: …
有没有人遇到过这个问题,如果有,你解决了吗?是代码问题还是 Xamarin / Visual Studio Mac 错误?
理想情况下,我不想将这些页面的 XamlCompilationOptions
设置为 Skip
,但无论哪种方式,我都不明白为什么它应该影响 iOS 而不是 Android.
首先,XamlCompilationOptions.Compile
表示在应用程序 class 或项目时编译 XAML built.While XamlCompilationOptions.Skip
在应用程序时执行相同的操作在设备上 运行。
此外,我建议您可以进行以下操作:
- 删除并重新生成所有共享文件
- 从 App.xaml
中删除 ;assembly:xxx
- 清理并重新构建。
这里有一个类似的帖子供您参考Xamarin.Forms.Xaml.XamlParseException has been thrown
PS:有一个link关于how to Upgrade PCL to .NET Standard Class Library
您需要先加载该程序集,然后才能使用它。在 Xaml
上它不加载,只是尝试到达,如果未加载则崩溃。在使用它之前,您需要通过调用方法或创建属于 MyAssembly
的对象来加载程序集。
程序集应该有一个 Init
方法来初始化事物。你应该调用它。
我正在开发一个 Xamarin.Forms 项目,为此我最近将共享项目从 PCL 升级到了 .NETStandard。
那时,我遇到了来自我的几个 UI XAML 文件的构建问题,错误是:
Failed to resolve assembly: ‘MyAssembly, Version 0.0.0.0, Culture=neutral, PublicKeyToken=null’
发现问题文件是那些引用自定义 XAML 控件的文件。在网上找到几个有类似问题的人后,我最终发现我可以通过为那些从 Compile
到 Skip
的页面设置 XamlCompilationOptions
来解决这个问题。该项目现在为 iOS 和 Android.
Android 版本正常工作,但是 iOS 版本在其中一个页面尝试加载时崩溃,由于存在自定义控件,并出现错误,例如:
Xamarin.Forms.Xaml.XamlParseException … Type shared.SharedControl not found in xlmns clr-namespace: …
有没有人遇到过这个问题,如果有,你解决了吗?是代码问题还是 Xamarin / Visual Studio Mac 错误?
理想情况下,我不想将这些页面的 XamlCompilationOptions
设置为 Skip
,但无论哪种方式,我都不明白为什么它应该影响 iOS 而不是 Android.
首先,XamlCompilationOptions.Compile
表示在应用程序 class 或项目时编译 XAML built.While XamlCompilationOptions.Skip
在应用程序时执行相同的操作在设备上 运行。
此外,我建议您可以进行以下操作:
- 删除并重新生成所有共享文件
- 从 App.xaml 中删除 ;assembly:xxx
- 清理并重新构建。
这里有一个类似的帖子供您参考Xamarin.Forms.Xaml.XamlParseException has been thrown
PS:有一个link关于how to Upgrade PCL to .NET Standard Class Library
您需要先加载该程序集,然后才能使用它。在 Xaml
上它不加载,只是尝试到达,如果未加载则崩溃。在使用它之前,您需要通过调用方法或创建属于 MyAssembly
的对象来加载程序集。
程序集应该有一个 Init
方法来初始化事物。你应该调用它。