Xamarin Forms.Xaml.XamlParseException

我正在创建一个xamarin行为来validation电子邮件ID,因此我创建了行为文件并尝试在XAML文件中对其进行本地化但是我收到以下错误

Xamarin.Forms.Xaml.XamlParseException:位置12:10。 键入local:在xmlns clr-namespace中找不到EmailBhvr:Validation.Helpers; assembly = Validation.Helpers

命名空间:validation

行为代码文件:EmailBhvr

这是我的XAML代码:

   

这可能与已知的链接问题有关 – Xamarin编译器最终链接出仅在XAML中引用的类(来自外部程序集)。

看起来EmailBhvr可能会被编译器链接出来。 有几个链接谈论这个:

  1. 扩展控制插件 >入门
  2. 强制组装链接

有很多选项可以解决这个问题:

  1. 在这里的“入门”部分中提到的每个类中添加一个静态Init方法

     // this ensures the class does not get // linked out in the application we add this assembly to. public static void Init() { } 
  2. 或者,使用Android和iOS上的保留属性保留代码

     public class Example { [Android.Runtime.Preserve] public Example () { } } 
  3. 或者,使用自定义链接 。

  4. 或者,更新项目配置以不链接。 Android和iOS 。 虽然不是推荐的选择。

我觉得你的XAML很干净。 看起来没有错误。 我认为问题出在ValidationEmailBhvr类。 我建议你validation一下。 确保XAML中的程序集名称也正确。 使用不正确的程序集名称也会发生XamlParseException。

我认为您在EmailBhvr文件中编写标签/属性名称时犯了一些错误。

因此,您正在解析exception。

要使导入工作,必须使用EmailBhvr类

  1. 被命名为“EmailBhvr”
  2. 驻留在具有程序集名称“Validation”的程序集中。
  3. 驻留在命名空间“validation”(检查您的类文件)

特别注意2:如果使用共享项目,程序集名称将是平台项目的名称(例如,它可能是Validation.Droid / Validation.iOS)。 可以修复两个相同的程序集名称(在项目属性中)。 例如“Validation.Platform”并相应地更改xaml名称空间导入

请确保XAML中的程序集名称正确无误。 它应该像这样xmlns:local =“clr-namespace:ProjectNamspace.Validation; assembly = ProjectNamspace.Validation”