Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有自定义控件的XAML页面上的Xamarin.Forms iOS崩溃_C#_Ios_Xamarin_Xamarin.forms_Visual Studio Mac - Fatal编程技术网

C# 带有自定义控件的XAML页面上的Xamarin.Forms iOS崩溃

C# 带有自定义控件的XAML页面上的Xamarin.Forms iOS崩溃,c#,ios,xamarin,xamarin.forms,visual-studio-mac,C#,Ios,Xamarin,Xamarin.forms,Visual Studio Mac,我正在从事一个Xamarin.Forms项目,最近我将该项目的共享项目从PCL升级到了.NETStandard 此时,我遇到了来自几个UI XAML文件的构建问题,错误如下: 未能解析程序集:“MyAssembly,版本0.0.0.0, 区域性=中性,PublicKeyToken=空' 发现问题文件是引用自定义XAML控件的文件。在网上找到几个有类似问题的人后,我最终发现我可以通过将这些页面的xamlcompileationoptions从Compile设置为Skip来解决这个问题。该项目现在为

我正在从事一个Xamarin.Forms项目,最近我将该项目的共享项目从PCL升级到了.NETStandard

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

未能解析程序集:“MyAssembly,版本0.0.0.0, 区域性=中性,PublicKeyToken=空'

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

Android版本正常工作,但是当其中一个页面尝试加载时,由于自定义控件的存在,iOS版本崩溃,出现以下错误:

Xamarin.Forms.Xaml.XamlParseException…未输入shared.SharedControl 在xlmns clr命名空间中找到:

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


理想情况下,我不想将这些页面的
xamlcompliationoptions
设置为
Skip
,但不管怎样,我都不明白为什么它会影响iOS而不会影响Android。

首先,
XamlCompilationOptions.Compile
意味着在构建应用程序时为类或项目编译XAML。而
XamlCompilationOptions.Skip
则在设备上运行应用程序时执行相同的操作

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

  • 删除并重新生成所有共享文件
  • 移除;程序集:App.xaml中的xxx
  • 重新清洁和建造
  • 这里有一条类似的线索供你参考


    PS:有一个关于

    的链接,您需要在使用该程序集之前加载该程序集。在
    Xaml
    上,它不加载,只需尝试访问,如果没有加载,就会崩溃。在使用它之前,您需要通过调用方法或创建对象来加载程序集


    应该有一个
    Init
    方法用于程序集初始化东西。你应该打电话给它。

    我打赌如果你在android上使用proguard,它的链接会和ios linker一样好,你也会在android上崩溃。跳过是一种解决方法,而不是解决方案。您最好解决迁移后出现的主要问题。在你的问题中没有足够的信息。谢谢,我通过链接迁移了它。这在Android方面没有任何问题,只针对iOS。谢谢,这个链接是我用来升级到.NET标准的指南。你可以访问链接了解更多信息。第2步似乎为我解决了这个问题。我搬走了;assembly=xxx来自引用共享控件的所有XAML视图文件,它起作用了。谢谢谢谢,我认为Init()方法应该是InitializeComponent(),这是页面构造函数中调用的第一个方法。在进一步阅读之后,我向共享控件类添加了一个静态Init()方法,并从AppDelegate.cs调用它,但是在我的例子中,这并没有解决问题。