Проверка форм Xamarin в Visual Studio 2017 XAML
Я действительно новичок в Xamarin.Forms и пытаюсь учиться, используя этот хороший учебник.
Мне удалось все настроить в 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):
Необработанное исключение:
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.
1 ответ
Чтобы перехватить ошибки XAML во время компиляции, вам нужно добавить одну строку в AssemblyInfo.cs:
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
Более подробную информацию об этом можно найти здесь.
К сожалению, XAMLIN.Forms XAML intellisense поддержка в VS не похожа на WPF или SilverLight, в настоящее время она очень ограничена. Одним из предложений может быть написание вашего пользовательского интерфейса в коде, таким образом вы получите обратную связь быстрее, и если вы очень плохо знакомы с Xamarin.Forms XAML, вы можете познакомиться с ним гораздо проще, потому что в коде есть intellisense.
Другой вариант - использовать расширения IDE, в вашем случае, как я понимаю, это VS 2017 для Windows, поэтому он вам не поможет, но для Xamarin Studio для MC у вас есть такие инструменты, как mfractor, которые собирают для решения проблем, которые вы решали.