Visual Studio 2017 XAML验证中的Xamarin表单

Visual Studio 2017 XAML验证中的Xamarin表单,xaml,xamarin.forms,visual-studio-2017,xamlparseexception,Xaml,Xamarin.forms,Visual Studio 2017,Xamlparseexception,我对Xamarin真的是一个新手。表单和尝试学习使用 我已成功地在Visual Studio 2017社区版中设置了所有内容,并成功地部署到模拟设备和物理设备(仅限Android) 在各种测试中,我注意到一些XAML错误没有突出显示,构建成功执行,但XAML在运行时失败,导致应用程序崩溃。例如,拼写错误的样式名称或属性值 在调试模式下运行只会挂起应用程序。断开它表示以下行: public partial class MainPage : global::Xamarin.Forms.Content

我对Xamarin真的是一个新手。表单和尝试学习使用

我已成功地在Visual Studio 2017社区版中设置了所有内容,并成功地部署到模拟设备和物理设备(仅限Android)

在各种测试中,我注意到一些XAML错误没有突出显示,构建成功执行,但XAML在运行时失败,导致应用程序崩溃。例如,拼写错误的样式名称或属性值

在调试模式下运行只会挂起应用程序。断开它表示以下行:

public partial class MainPage : global::Xamarin.Forms.ContentPage {  [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
    private void InitializeComponent() {
        // this is the last line from my code that hands when XAML is invalid
        this.LoadFromXaml(typeof(MainPage));
    }
}
恢复执行显示出错误的提示(没有新的VS2017异常接口提供的奇特细节):

未处理的异常:

Xamarin.Forms.Xaml.XamlParseException:发生

问题:是否有一种方法可以更早捕获无效的XAML错误?或者至少获取更多相关信息?或者这是Xamarin.Forms的已知限制

更糟糕的是,属性值的自动完成在VS2017中似乎不起作用(它在VS2015中起作用),但这是另一个问题的另一个问题

有关已安装软件的更多详细信息:

Microsoft Visual Studio Community 2017
Version 15.0.26228.9 D15RTWSVC
Microsoft .NET Framework
Version 4.6.01586

Installed Version: Community

Xamarin   4.3.0.795 (aece090)
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.

Xamarin.Android SDK   7.1.0.41 (9578cdc)
Xamarin.Android Reference Assemblies and MSBuild support.

Xamarin.iOS and Xamarin.Mac SDK   10.4.0.123 (35d1ccd)
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support.

要在编译时捕获XAML错误,必须在AssemblyInfo.cs中添加一行:

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
有关这方面的更多信息,请参见

不幸的是,VS中对Xamarin.Forms XAML intellisense的支持与WPF或SilverLight不同,目前非常有限。一个建议是用代码编写ui,这样您可以更快地获得反馈,如果您对Xamarin.Forms XAML非常陌生,您可以更容易地熟悉它,因为代码背后有intellisense


另一种选择是使用IDE扩展,据我所知,这是针对Windows的VS 2017,因此它对您没有帮助,但对于Xamarin Studio for MC,您有这样的工具,可以解决您所解决的问题。

感谢您的快速回复。不幸的是,它似乎不起作用(至少不再起作用)。我尝试了程序集级属性和类级属性。此外,在VS2015中进行了试验。然而,我刚刚意识到Resharper(目前仅在VS2015中处于活动状态)正确地突出显示了XAML错误,因此可以将其用作早期检测错误XAML引用的解决方案。“XamlCompilationOptions.Compile”将编译您的XAML。如果您的XAML不正确或已损坏,则会出现编译时错误。因此,您不必运行应用程序来发现XAML中存在错误。是的,当XAML不是正确的XML或内置属性值拼写错误时,我会收到编译错误。但是,它会让我编写不正确的资源引用,并在运行时崩溃。现在还可以(我可以等待执行Resharper升级以在VS2017中获得错误突出显示)。