Xamarin Forms.Xaml.XamlParseException

前端 未结 5 1402
长发绾君心
长发绾君心 2021-01-26 00:30

I am creating a xamarin behaviour to validate an email id, therefore I created the behaviour file and tried to localise it in XAML file but I get the below error

相关标签:
5条回答
  • 2021-01-26 00:57

    For the import to work, the class EmailBhvr must

    1. be named "EmailBhvr"
    2. reside in an assembly with an assembly name "Validation".
    3. reside in the namespace "Validation" (check your class file)

    Be especially careful with 2.: If you use a shared Project the assembly name will be that of the platform project (e.g. it could be Validation.Droid / Validation.iOS). That can be fixed be giving both the same Assembly name (in project properties). For example "Validation.Platform" and change the xaml namespace import accordingly

    0 讨论(0)
  • 2021-01-26 01:00

    I think you made some mistake while writing tags/property names in your EmailBhvr file.

    Because of that you are getting parsing exception.

    0 讨论(0)
  • 2021-01-26 01:09

    Please Make sure that the assembly name in XAML is correct. it should be like this xmlns:local="clr-namespace:ProjectNamspace.Validation;assembly=ProjectNamspace.Validation"

    0 讨论(0)
  • 2021-01-26 01:18

    I feel your XAML is clean. Looks error free. I think the problem is with the EmailBhvrclass in Validation. I suggest you to verify it. Make sure that the assembly name in XAML is also correct. XamlParseException can also occur with the incorrect assembly name..

    0 讨论(0)
  • 2021-01-26 01:21

    This could be related to a known linking issue - where Xamarin compiler ends up linking out classes (from external assemblies) that have references only in XAML.

    Looks like EmailBhvr might be getting linked out by the compiler. There are couple of links that talk about this:

    1. Extending Control plugins > Getting Started
    2. Force assembly linking

    There are a lot of options to resolve this:

    1. Add a static Init method in each class as mentioned here in "Getting started" section here

      // this ensures the class does not get 
      // linked out in the application we add this assembly to.
      public static void Init() { }
      
    2. Or, preserve code using preserve attributes on Android, and iOS

      public class Example
      {
           [Android.Runtime.Preserve]
           public Example ()
           {
           }
      }
      
    3. Or, use Custom linking.

    4. Or, update project configuration to not link. Android, and iOS. Not a recommended option though.

    0 讨论(0)
提交回复
热议问题