我正在开发一个Xamarin.Forms项目,我最近将共享项目从PCL升级到了.NETStandard。
那时,我遇到了来自我的几个UI XAML文件的构建问题,错误是:
无法解析程序集:'MyAssembly,Version 0.0.0.0,Culture = neutral,PublicKeyToken = null'
发现问题文件是那些引用自定义XAML控件的文件。在网上找到几个有类似问题的人之后,我最终发现我可以通过为XamlCompilationOptions
和Compile
这些页面设置Skip
来解决这个问题。该项目现在为iOS和Android构建。
Android版本正常运行,但是当其中一个页面因为存在自定义控件而尝试加载时,iOS版本崩溃,并出现如下错误:
Xamarin.Forms.Xaml.XamlParseException ...在xlmns clr-namespace中找不到类型shared.SharedControl:...
有没有人遇到过这个问题,如果有的话,你解决了吗?是代码问题还是Xamarin / Visual Studio Mac错误?
理想情况下,我不想将这些页面的XamlCompilationOptions
设置为Skip
,但无论哪种方式,我都不明白它为什么会影响iOS而不是Android。
首先,XamlCompilationOptions.Compile
表示在构建应用程序时为类或项目编译XAML。当应用程序在设备上运行时,XamlCompilationOptions.Skip
会执行相同的操作。
另外,我建议您可以执行以下步骤:
这里有一个类似的主题,你指的是Xamarin.Forms.Xaml.XamlParseException has been thrown
PS:有一个关于how to Upgrade PCL to .NET Standard Class Library的链接
您需要在使用之前加载该程序集。在Xaml
它没有加载,只是尝试到达,并崩溃,如果它没有加载。在使用它之前,您需要通过调用方法来加载程序集,或者创建一个属于MyAssembly
的对象。
应该有一个Init
方法来组装初始化事物。你应该打电话给它。