![](/img/trans.png)
[英]Xamarin.Forms : “InitializeComponent” and “Package restore failed” Build Errors
[英]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中存在错误,则会引发异常。 问题在于,Android经常吞下导致崩溃的异常。
您可以尝试在抛出XamlParseException
时中断。 那应该使您到达崩溃之前的地步。
如您所见,XAML在编译时不进行验证,而仅在运行时进行验证。 但是,如果打开XamlC
( https://developer.xamarin.com/guides/xamarin-forms/xaml/xamlc/ ),则(大多数)分析错误将在编译时发现。 这不是使用XamlC
的唯一参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.