回归问题:XAMLCompilation错误值不能为null,参数名称:方法



我搜索以找到这个问题,但是答案对我不起作用,因此问题仍然存在。

就个人而言,我相信这个问题可能与某些配置" Thing"有关,但是我不知道从哪里开始寻找它。据我所知,我没有从规范(仅使用的标准新项目方法)中更改任何配置设置。这是我问题的一些细节:

碰巧的是,今天是第一次尝试XAMLC功能。首先,我在app.cs文件中尝试了汇编级别属性:

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

编译后,我遇到了许多错误。我还使用TemplateControl在任何页面上都有一个不同的错误。因此,我将其从组件级别上删除,并在一个页面上放置一个类级属性,但它仍然失败了相同的错误:

Value cannot be null.
Parameter name: method

我在Stackoverflow上戳了一下,发现大约一年前有人遇到了同样的问题(在此),但他们说他们通过将XAM表单升级到最新版本来解决。由于我使用了最新的稳定版本,所以我没有去那里的地方。

我在应用程序中的几个页面上尝试了此类级属性,并且仅在整个应用程序中的单个页面上工作。我想知道是否引入了一个错误会导致它炸毁。

无效的页面标记:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Prepify.App.Pages.MainMenu"
                         xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions"
                         BackgroundColor="White"
             Title="Menu">
    <StackLayout VerticalOptions="FillAndExpand">
        <ListView
            Header="{Binding .}"
            SeparatorColor="{StaticResource dividerColor}"
            HasUnevenRows="True"
            ItemSelected="AppMenu_OnItemSelected"
            ItemTapped="AppMenu_OnItemTapped"
            ItemsSource="{Binding Items}"
            x:Name="appMenu">
            <ListView.HeaderTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="10"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="30"/>
                            <ColumnDefinition Width="10"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="30"/>
                            <RowDefinition Height="80"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="5"/>
                        </Grid.RowDefinitions>
                        <BoxView Grid.ColumnSpan="4" Grid.RowSpan="4" BackgroundColor="{StaticResource grayDark}"/>
                        <controls:CircleImage Grid.Column="1" Grid.Row="1" HorizontalOptions="Start" VerticalOptions="End" Source="{Binding ProfileImageUrl}" WidthRequest="75" HeightRequest="75"/>
                        <Label Grid.Column="1" Grid.Row="2" Text="{Binding FullName}"/>
                        <ActivityIndicator Grid.Column="2" Grid.Row="2" IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}" Color="White" WidthRequest="20" HeightRequest="20" VerticalOptions="Center" />
                    </Grid>
                </DataTemplate>
            </ListView.HeaderTemplate>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal" >
                            <StackLayout.Padding>
                                <OnPlatform x:TypeArguments="Thickness" Android="15,15,15,15" iOS="25,12,15,12" />
                            </StackLayout.Padding>
                            <Image Source="{Binding Icon}" VerticalOptions="Center" WidthRequest="20" HeightRequest="20"/>
                            <Image WidthRequest="20"/>
                            <Label Text="{Binding Label}" VerticalOptions="Center" TextColor="{Binding LabelColor}" Style="{DynamicResource ListItemTextStyle}"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage>

只能工作的页面标记(注意,任何地方都没有绑定):

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="Prepify.App.Pages.Root"
    xmlns:pages="clr-namespace:Prepify.App.Pages;assembly=Prepify.App"
    MasterBehavior="Popover"
    Title="Make Preparedness Easy">
    <MasterDetailPage.Master>
        <pages:MainMenu/>
    </MasterDetailPage.Master>
</MasterDetailPage>

我正在使用发布此问题的所有最新信息。Visual Studio 2015Xamarin.Forms 2.3.3.193Xamarin.vs 4.3.0.784

i对于一个完全包含一个页面(XAML CS)和一个ViewModel的项目的项目完全相同。我更改了一行,保存了机会,并且不再构建,此外还有这个错误:

Value cannot be null.
Parameter name: method

在我的情况下,更改包装版本已修复。只需右键单击您的项目>打开属性>在左侧>上的打开软件包选项卡,然后增加软件包版本号。当然,我在解决方案上进行了许多干净和重建。

这对我有用,但是我必须承认我刚开始使用Xamarin,所以我真的不知道我在做什么:D也许这对任何人都有帮助。

哦,也许很重要:我正在使用Xamarin 3.2.0.839982在Visual Studio 2017

所以...得到您的反馈和一些从这里获得的反馈后,我只是决定尝试从头开始重建我的PCL。经过数小时的艰苦迁移文件,一次迁移文件并确保XAMLCompilation在途中的每一步都可以工作,我将其构建起来没有错误。然后,我刚刚复制了我制作的新项目(2 pcl),而旧项目则完美地编译了解决方案。

答案:???空无一人。这是一个完全的氟。我一路上没有学到的可以确定问题的原因。如果您遇到此问题,请尝试使用标准项目模板从头开始重建PCL。

警告:这不是一个正确的答案,但要发表评论太久了。然后回答。

我将XAML粘贴到了一个新的和新鲜的Xamarin.Forms项目中(引用XF 2.3.3.180(也以.193的尝试)和ImageCircle 1.8.1)固定了2个事件处理程序,并添加了[XamlCompilation]属性,它的编译很好。

如果您不能缩小问题的范围,并且仍然认为这是Xamarin.forms中的问题,则应在https://bugzilla.xamarin.com/enter_bug.cgi?product=中打开带有复制案例的错误报告。形式。完成后,您甚至可以ping我,所以我会看它。

最新更新