System.TypeLoadException:父类vtable初始化失败,原因是:AndroidX.SwipeRefreshLayout.Widget.SwipeRefreshLayout类型的VTable设置

关于我的环境的信息

  • Mac OS 大苏尔:11.4
  • VS for Mac:8.10.6(内部版本 10)
  • Xamarin.Android:11.3.0.4
  • SDK 工具版本:26.1.1
  • SDK平台工具版本:31.0.2
  • SDK 构建工具版本:31.0.0 rc5
  • microsoft_dist_openjdk_1.8.0.25 1.8.0-25
  • Xamarin.Forms:5.0.0.2012
  • Xamarin.Forms.Visual.Material:5.0.0.2012
  • Xamarin.Google.Android.Material: 1.2.1.1

附加信息

  • 使用 AndroidX 库
  • 没有参考 Xamarin.Android.Support.Design
  • 多次手动清洁溶液
  • 多次删除所有 bin 和 obj 文件夹并多次重置 Visual Studio
  • 目标框架:10.0 (Q)

问题:
我能够构建并部署到我的设备,但是当应用程序运行并加载登录页面时,在InitializeComponent()调用过程中会引发以下异常:

错误:System.TypeLoadException:父类 vtable 初始化失败,原因是:AndroidX.SwipeRefreshLayout.Widget.SwipeRefreshLayout 类型的 VTable 设置失败程序集:/data/data/com.app.dev/files/。覆盖/Xamarin.AndroidX.SwipeRefreshLayout.dll type:SwipeRefreshLayout member:(null) at (wrapper managed-to-native) System.RuntimeTypeHandle.type_is_assignable_from(System.Type,System.Type) at System.RuntimeTypeHandle.CanCastTo (System.RuntimeType type) , System.RuntimeType 目标) [0x00000] 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System/RuntimeTypeHandle.cs:265 在 System.RuntimeType.IsAssignableFrom (System.Type c) [0x00020] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/rttype.cs:3809 at Xamarin.Forms .VisualTypeConverter.Register(System.Reflection.Assembly 程序集,System.Collections.Generic.Dictionary`2[TKey,TValue] 映射)[0x00019] 在 D:a1sXamarin.Forms.CoreVisualsVisualTypeConverter .cs:64 在 Xamarin.Forms。VisualTypeConverter.InitMappings () [0x0001a] 在 D:a1sXamarin.Forms.CoreVisualsVisualTypeConverter.cs:22 在 Xamarin.Forms.VisualTypeConverter.ConvertFromInvariantString (System.String 值)[0x00007] 在 D :a1sXamarin.Forms.CoreVisualsVisualTypeConverter.cs:119

以下是正在加载的页面中的 xaml:

<ContentPage x:Class="SignInPage"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:d="http://xamarin.com/schemas/2014/forms/design"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:effects="clr-namespace:XF.Core.Effects;assembly=XF.Core"
            x:Name="SignInPage"
            IsBusy="{Binding IsBusy, Mode=OneWay}"
            Visual="Material"
            mc:Ignorable="d">
    <ContentPage.Content>
        <StackLayout
            x:Name="ContentStackLayout"
            Margin="0"
            Padding="0"
            AutomationId="ContentStackLayout"
            BackgroundColor="White"
            HorizontalOptions="FillAndExpand"
            Orientation="Vertical"
            VerticalOptions="FillAndExpand">
            <Grid
                x:Name="MainContentGrid"
                Margin="0,0,0,0"
                AutomationId="MainContentGrid"
                ColumnSpacing="0"
                HorizontalOptions="FillAndExpand"
                RowSpacing="0"
                VerticalOptions="FillAndExpand">
                <Grid.RowDefinitions>
                    <RowDefinition>
                        <RowDefinition.Height>
                            <OnIdiom
                                x:TypeArguments="GridLength"
                                Phone="50"
                                Tablet="60" />
                        </RowDefinition.Height>
                    </RowDefinition>
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="10" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="3*" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="8" />
                </Grid.ColumnDefinitions>
                <Image
                    x:Name="HeaderGradientImage"
                    Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="6"
                    Aspect="Fill"
                    AutomationId="HeaderGradientImage"
                    HorizontalOptions="Fill"
                    Source="{Binding HeaderGradientBackgroundImageUrl}"
                    VerticalOptions="Fill" />
                <Label
                    x:Name="TitleLabel"
                    Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="6"
                    AutomationId="TitleLabel"
                    Style="{Binding HeaderTitleWhiteLabelStyle}"
                    Text="{Binding Title}" />
                <Image
                    x:Name="LogoImage"
                    Grid.Row="0"
                    Grid.Column="4"
                    Aspect="AspectFit"
                    AutomationId="LogoImage"
                    HorizontalOptions="End"
                    Source="{Binding LogoIconUrl}"
                    VerticalOptions="Center">
                    <Image.GestureRecognizers>
                        <TapGestureRecognizer Command="{Binding AppLogoTappedCommand}" NumberOfTapsRequired="1" />
                    </Image.GestureRecognizers>
                </Image>
                <StackLayout
                    x:Name="SignInStackLayout"
                    Grid.Row="1"
                    Grid.Column="0"
                    Grid.ColumnSpan="6"
                    AutomationId="SignInStackLayout"
                    HorizontalOptions="FillAndExpand"
                    Orientation="Vertical">
                    <StackLayout.VerticalOptions>
                        <OnIdiom
                            x:TypeArguments="LayoutOptions"
                            Phone="CenterAndExpand"
                            Tablet="StartAndExpand" />
                    </StackLayout.VerticalOptions>
                    <StackLayout.Margin>
                        <OnIdiom
                            x:TypeArguments="Thickness"
                            Phone="15,0,15,0"
                            Tablet="50,75,50,0" />
                    </StackLayout.Margin>
                    <Label
                        x:Name="PleaseLogInLabel"
                        Margin="0,7,0,0"
                        AutomationId="PleaseLogInLabel"
                        FontSize="Large"
                        HorizontalOptions="Start"
                        Text="Please Log In"
                        TextColor="#002D72"
                        VerticalOptions="Center" />
                    <Label
                        x:Name="UserIdLabel"
                        Margin="0,15,0,0"
                        AutomationId="UserIdLabel"
                        FontSize="Small"
                        Text="USER ID"
                        TextColor="#002D72"
                        VerticalOptions="Center">
                        <Label.WidthRequest>
                            <OnIdiom
                                x:TypeArguments="x:Double"
                                Phone="200"
                                Tablet="320" />
                        </Label.WidthRequest>
                    </Label>
                    <Frame
                        x:Name="UserIdFrame"
                        Margin="0,0,0,0"
                        AutomationId="UserIdFrame"
                        BackgroundColor="White"
                        BorderColor="#002D72"
                        Padding="0,0,0,0">
                        <Entry
                            x:Name="UserIdEntry"
                            Margin="0,0,0,0"
                            AutomationId="UserIdEntry"
                            BackgroundColor="White"
                            FontSize="Medium"
                            Keyboard="Text"
                            Placeholder="User"
                            PlaceholderColor="#BBBBBB"
                            Text="{Binding UserId, Mode=TwoWay}"
                            TextChanged="UserIdEntry_TextChanged"
                            TextColor="#002D72"
                            VerticalOptions="Center"
                            Visual="Material">
                            <Entry.WidthRequest>
                                <OnIdiom
                                    x:TypeArguments="x:Double"
                                    Phone="200"
                                    Tablet="320" />
                            </Entry.WidthRequest>
                            <Entry.Effects>
                                <effects:CgEntryCapitalizeKeyboardEffect />
                            </Entry.Effects>
                        </Entry>
                    </Frame>
                    <Label
                        x:Name="PasswordLabel"
                        Margin="0,5,0,0"
                        AutomationId="PasswordLabel"
                        FontSize="Small"
                        Text="Password"
                        TextColor="#002D72"
                        VerticalOptions="Center">
                        <Label.WidthRequest>
                            <OnIdiom
                                x:TypeArguments="x:Double"
                                Phone="200"
                                Tablet="320" />
                        </Label.WidthRequest>
                    </Label>
                    <Frame
                        x:Name="PasswordFrame"
                        Margin="0,0,0,0"
                        AutomationId="PasswordFrame"
                        BackgroundColor="White"
                        BorderColor="#002D72"
                        Padding="0,0,0,0">
                        <Entry
                            x:Name="PasswordEntry"
                            Margin="0,0,0,0"
                            AutomationId="PasswordEntry"
                            BackgroundColor="White"
                            FontSize="Medium"
                            IsPassword="true"
                            Keyboard="Text"
                            Placeholder="Desktop Password"
                            PlaceholderColor="#BBBBBB"
                            Text="{Binding Password, Mode=TwoWay}"
                            TextChanged="PasswordEntry_TextChanged"
                            TextColor="#002D72"
                            VerticalOptions="Center">
                            <Entry.WidthRequest>
                                <OnIdiom
                                    x:TypeArguments="x:Double"
                                    Phone="200"
                                    Tablet="320" />
                            </Entry.WidthRequest>
                        </Entry>
                    </Frame>
                    <Label
                        x:Name="DomainLabel"
                        Margin="0,5,0,0"
                        AutomationId="DomainLabel"
                        FontSize="Small"
                        Text="Domain"
                        TextColor="#002D72"
                        VerticalOptions="Center">
                        <Label.WidthRequest>
                            <OnIdiom
                                x:TypeArguments="x:Double"
                                Phone="200"
                                Tablet="320" />
                        </Label.WidthRequest>
                    </Label>
                    <Frame
                        x:Name="NetworkDomainPickerFrame"
                        Margin="0,0,0,0"
                        AutomationId="NetworkDomainPickerFrame"
                        BackgroundColor="White"
                        BorderColor="#002D72"
                        Padding="0,0,0,0">
                        <Picker
                            x:Name="NetworkDomainPicker"
                            Margin="0,0,0,0"
                            AutomationId="NetworkDomainPicker"
                            BackgroundColor="White"
                            Title="Select Network Domain"
                            FontSize="Medium"
                            ItemDisplayBinding="{Binding Name}"
                            ItemsSource="{Binding NetworkDomainList}"
                            TitleColor="#BBBBBB"
                            SelectedIndexChanged="NetworkDomainPicker_SelectedIndexChanged"
                            SelectedItem="{Binding SelectedNetworkDomain, Mode=TwoWay}"
                            TextColor="#002D72"
                            VerticalOptions="Center">
                            <Picker.WidthRequest>
                                <OnIdiom
                                    x:TypeArguments="x:Double"
                                    Phone="200"
                                    Tablet="320" />
                            </Picker.WidthRequest>
                        </Picker>
                    </Frame>
                    <Button
                        x:Name="SignInButton"
                        Margin="0,15,0,0"
                        AutomationId="SignInButton"
                        BackgroundColor="#056DAE"
                        Command="{Binding SignInCommand}"
                        FontSize="Medium"
                        IsEnabled="{Binding IsFormEntryValid}"
                        Text="Log In"
                        TextColor="White">
                        <Button.HeightRequest>
                            <OnIdiom
                                x:TypeArguments="x:Double"
                                Phone="40"
                                Tablet="50" />
                        </Button.HeightRequest>
                    </Button>
                    <BoxView
                        x:Name="ViewHeaderSeparatorBoxView"
                        Margin="0,15,0,15"
                        AutomationId="ViewHeaderSeparatorBoxView"
                        BackgroundColor="#CCCCCC"
                        HeightRequest="2"
                        HorizontalOptions="FillAndExpand"
                        VerticalOptions="FillAndExpand" />
                    <ScrollView x:Name="DisclaimerScrollView" AutomationId="DisclaimerScrollView">
                        <StackLayout Orientation="Vertical">
                            <Label
                                x:Name="DisclaimerLabel"
                                Margin="0,0,0,0"
                                AutomationId="DisclaimerLabel"
                                FontSize="Small"
                                HorizontalOptions="StartAndExpand"
                                Text="{Binding SignInDisclaimerText}"
                                TextColor="#53565A"
                                VerticalOptions="StartAndExpand" />
                            <Label
                                x:Name="DisclaimerLabel"
                                Margin="0,20,0,0"
                                AutomationId="DisclaimerLabel"
                                FontSize="Micro"
                                HorizontalOptions="CenterAndExpand"
                                LineBreakMode="WordWrap"
                                Text="{Binding SignInDisclaimerText}"
                                TextColor="#53565A"
                                VerticalOptions="EndAndExpand" />
                        </StackLayout>
                    </ScrollView>
                </StackLayout>
            </Grid>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

回答

https://github.com/xamarin/Xamarin.Forms/issues/14424

安装 Xamarin.AndroidX.AppCompat.AppCompatResources(版本 1.3.0)

和降级

Xamarin.AndroidX.Core 从版本 1.6.0 到 1.5.0

为我解决问题。


以上是System.TypeLoadException:父类vtable初始化失败,原因是:AndroidX.SwipeRefreshLayout.Widget.SwipeRefreshLayout类型的VTable设置的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>