繁体   English   中英

xamarin窗体InitializeComponent挂起

[英]xamarin forms InitializeComponent hangs

我正在使用Visual Studio 2017在C#中创建默认的Xamarin Forms PCL项目。 如果我在XAML中出错,则InitializeComponent()调用将挂起。 没有编辑器,编译器,构建器或运行时错误。 有没有办法研究错误的原因? 我很确定Visual Studio 2015抛出了运行时错误。

这是参考缺少样式的示例。 这将导致InitializeComponent()挂起。 我正在使用VisualStudio_android-23_x86_phone模拟器,并且VS对我尝试过的每个模拟器以及Samsung Note 4都执行相同的操作。谢谢。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:Broken"
             x:Class="Broken.MainPage">
    <Label Text="Welcome to Xamarin Forms!" 
           VerticalOptions="Center" 
           HorizontalOptions="Center"
           Style="{StaticResource myStyle}"/>

</ContentPage>

答案非常简单。 将InitializeComponent放在try / catch中。 即使InitializeComponent在检测到XAML解析错误时未返回,您也可以捕获该异常,并且ex.message很有用。

try
            {
                InitializeComponent();
            }
            catch (Exception ex)
            {
                throw ex;
            }

显示消息“ Xamarin.Forms.Xaml.XamlParseException:位置9:12。找不到键myStyle的StaticResource”。 我没想到异常会被捕获,但是我偶然是错误的。

感谢斯蒂芬妮的“燕子”线索。

您可以启用XAML编译功能,以在编译时而不是运行时捕获XAML的错误。

如果您的XAML中存在错误,则会引发异常。 问题在于,Android经常吞下导致崩溃的异常。

您可以尝试在抛出XamlParseException时中断。 那应该使您到达崩溃之前的地步。

如您所见,XAML在编译时不进行验证,而仅在运行时进行验证。 但是,如果打开XamlChttps://developer.xamarin.com/guides/xamarin-forms/xaml/xamlc/ ),则(大多数)分析错误将在编译时发现。 这不是使用XamlC的唯一参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM