Как реализовать проверки во время разработки для XAML, которые приводят к ошибкам компиляции?

Как обеспечить, чтобы разработчики, пишущие XAML в Visual Studio, следовали определенным стандартам и должны выполняться проверки, а также если возникают недопустимые ошибки времени компиляции.

Например, убедитесь, что все выражения привязки данных (некоторые из них очень длинные) написаны правильно в соответствии с «пользовательской проверкой», которую я хотел бы реализовать во время разработки. Нравится,

<TextBox Text="{Binding Source={StaticResource CALCULATED}, Converter={StaticResource XPathConverter}, ConverterParameter=@FIRSTNAME_STRING, XPath=@FIRSTNAME}"/>

В приведенном выше примере, если выражение привязки в свойстве Text имеет другой формат, должна возникнуть ошибка компиляции.

Есть ли способ сделать это?


person Vin    schedule 02.12.2008    source источник


Ответы (2)


К сожалению, языковую службу XAML также нельзя расширить таким образом. Сегодня лучший способ сделать это — создать задачу сборки. Я думаю, вы можете подключить его к цели MarkupCompilePass1DependsOn, и он будет вызываться автоматически, когда пользователь сохраняет или изменяет файл XAML. Вам по-прежнему придется повторно сканировать файл от нас, но вам не нужно ждать фактической сборки, чтобы это заработало. Это прямая цитата одного из архитекторов Microsoft, который в настоящее время работает над дизайнерами WPF.

person Community    schedule 17.12.2008

Нет встроенного способа сделать это. Лучший способ получить этот результат — запустить пользовательский инструмент на входе. Это потребует большой работы с вашей стороны, потому что это будет включать в себя разбор файла самостоятельно, но вы должны быть в состоянии заставить этот сценарий работать.

Пример сайта для создания собственного генератора

http://www.drewnoakes.com/snippets/WritingACustomCodeGeneratorToolForVisualStudio/

person JaredPar    schedule 03.12.2008
comment
+1 Спасибо, но, написав собственные инструменты для файлов xaml, я буду выплевывать прикрепленные к нему cs или другие файлы, чего мы хотим избежать. Вопрос в том, как направить ошибки как ошибки компиляции. Интересно, как... - person Vin; 03.12.2008
comment
У меня нет большого опыта работы с кастомными генераторами. Я бы попробовал бросить и исключить из метода и посмотреть, не приведет ли это к ошибке в списке задач. - person JaredPar; 03.12.2008
comment
Спасибо Джаред, тогда в этом случае пользовательские генераторы могут не быть ответом на эту проблему времени разработки, все еще думаю... - person Vin; 03.12.2008