Принудительно использовать x: имя для определенных пользовательских элементов управления? - PullRequest
0 голосов
/ 11 сентября 2018

Мой отдел начал использовать Ranorex для автоматического тестирования GUI около года назад. Чтобы работать корректно, Ranorex должен будет идентифицировать определенные UserControls, для которых мы используем событие PreBuild в наших проектах, которое гарантирует, что в основном каждый XAML-элемент получает уникальный тег x: Uid:

"$ (MSBuildBinPath) \ MSBuild.exe" / p: конфигурация = $ (имя_конфигурации) / p: платформа = $ (имя_платформы) / t: updateuid "$ (ProjectPath)"> NUL

Пока это текущее решение работает, оно имеет два недостатка, которые мне не нравятся: 1. Каждый элемент получает тег x: Uid, даже тот, который никогда не понадобится (около 80% XAML). 2. Если x: Name не было определено для элемента, то AutomationId получит общее имя, например «TextBox_1», «TextBox2_», «TextBox3_», ... из msbuild.exe, что иногда затрудняет работу тестировщиков. определить правильный UserControl при создании своих тестов.

Было бы лучше, если бы мы могли заставить Visual Studio принудительно использовать x: Name для определенных типов UserControl. В 99% всех случаев наши тестеры используют только пользовательские элементы управления, которые используются для пользовательского ввода, такие как, например, TextBox, ComboBox и CheckBox. Я знаю, что это одна из приятных частей WPF, которая не требует x: Name, но в нашем случае это действительно имеет смысл, поэтому остается вопрос:

Есть ли способ заставить Visual Studio принудительно использовать x: Name?

...