【问题标题】:Xamarin Forms in Visual Studio 2017 XAML validationVisual Studio 2017 XAML 验证中的 Xamarin 表单
【发布时间】:2017-08-26 16:01:32
【问题描述】:

我对 Xamarin.Forms 非常陌生,并尝试使用 this nice tutorial 进行学习。

我已成功在 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 xamarin.forms visual-studio-2017 xamlparseexception


    【解决方案1】:

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

    [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
    

    更多信息请见here

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

    另一种选择是使用 IDE 扩展,在您的情况下,据我了解它是 VS 2017 for Windows,所以它不会帮助您,但对于 Xamarin Studio for MC,您有像 mfractor 这样的工具来解决问题你解决了。

    【讨论】:

    • 感谢您的快速回复。不幸的是,它似乎不起作用(至少不再起作用)。我已经尝试了程序集级属性和类级属性。另外,在VS2015中尝试过。但是,我刚刚意识到 Resharper(目前仅在 VS2015 中有效)正确地突出显示 XAML 错误,因此它可以用作早期检测不正确 XAML 引用的解决方法。
    • 'XamlCompilationOptions.Compile' - 将编译您的 XAML。如果您的 XAML 不正确或损坏,您将收到编译时错误。因此,您不必运行应用程序即可发现 XAML 中有错误。
    • 是的,当 XAML 不是正确的 XML 或内置属性值拼写错误时,我会收到编译错误。但是,它会让我编写不正确的资源引用并在运行时崩溃。现在很好(我可以等待执行 Resharper 升级以在 VS2017 中突出显示错误)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2017-09-07
    • 2017-08-01
    • 1970-01-01
    • 2017-08-19
    • 2018-08-09
    • 1970-01-01
    相关资源
    最近更新 更多