Visual Studio 2017 XAML 验证中的 Xamarin Forms

Xamarin Forms in Visual Studio 2017 XAML validation

我是 Xamarin.Forms 的新手,正在尝试使用 this nice tutorial 进行学习。

我已经在 Visual Studio 2017 Community Edition 中设置了所有内容并成功部署到模拟设备和物理设备(仅 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 异常接口提供的花哨细节):

Unhandled Exception:

Xamarin.Forms.Xaml.XamlParseException: occurred

问题: 有没有办法更早捕获无效的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)]

有关这方面的更多信息,请参见 here

不幸的是 Xamarin.Forms XAML VS 中的智能感知支持与 WPF 或 SilverLight 不同,目前非常有限。一个建议是用代码编写 ui,这样你会更快地得到反馈,如果你是 Xamarin.Forms XAML 的新手,你可以更容易熟悉它,因为代码隐藏中的智能感知。

另一种选择是使用 IDE 扩展,据我所知,在你的情况下,它是 Windows 的 VS 2017,所以它对你没有帮助,但对于 Xamarin Studio for MC 你有类似的工具mfractor,ui将解决您提出的问题。