我正在使用VisualStudio2017在C#中创建默认的项目。如果在中出现任何错误,则InitializeComponent()调用挂起。没有编辑器、编译器、构建器或运行时错误.有没有办法研究错误的原因?我很确定2015抛出了一个运行时错误。
下面是一个引用缺失样式的示例。这会导致InitializeComponent()挂起。我正在使用VisualStudio_Android-23x86_phone仿真器,VS对我尝试过的每个模拟器以及三星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>发布于 2017-05-18 14:57:52
答案非常简单。将InitializeComponent放入尝试/捕捉中。即使当InitializeComponent检测到XAML解析错误时不返回,您也可以捕获异常,并且ex.message是有用的。
try
{
InitializeComponent();
}
catch (Exception ex)
{
throw ex;
}显示消息"Xamarin.Forms.Xaml.XamlParseException: Position 9:12. StaticResource not for key myStyle“。我没有料到这一例外会被抓住,但我偶然地错了。
感谢斯蒂芬恩的“燕子”线索。
发布于 2017-05-18 03:56:18
您可以使XAML编译在编译时而不是运行时捕获XAML错误。
发布于 2017-05-18 09:12:49
如果您的XAML中有错误,则会引发异常。问题是Android经常吞下导致崩溃的异常。
当抛出XamlParseException时,您可以尝试破坏。这应该能让你在坠机前说到重点。
正如您所理解的,XAML不是在编译时验证,而是只在运行时进行验证。但是,如果打开XamlC (https://developer.xamarin.com/guides/xamarin-forms/xaml/xamlc/),(大部分)解析错误将在编译时发现。而这并不是使用XamlC的唯一理由。
https://stackoverflow.com/questions/44036565
复制相似问题