В моем расширении есть окно инструментов с пользовательским элементом управления WPF. Для одной из привязок я пытаюсь реализовать преобразователь строковых значений enum . У меня определен конвертер:
и Visual Studio его увидит:
Однако проект не будет построен. После того, как я полностью добавил его, ошибок нет, но если я добавлю его, закрою Visual Studio, удалю скрытую папку .vs, а также папки bin и obj (на основании предложений, которые я видел), снова открою решение, выполню очистку решения, а затем пересоберу решение, я получу кучу ошибок:
Если я вытащу
из раздела UserControl.Resources, то решение будет собрано без проблем. Обратите внимание, что BooleanToVisibilityConverter (встроенный) работает нормально. Я также попытался воссоздать конвертер с разными именами в разных пространствах имен, а также добавить в конвертер конструктор без параметров (это было еще одно предложение, которое я видел), но проблема не устранена. Является ли это ограничением проектов VSIX или существует какое-то другое требование по привлечению ресурсов из другого пространства имен в рамках проекта?
Обновление №1
После дальнейшего изучения выяснилось, что это связано с некоторым конфликтом с Metalama. Я использую их образец отслеживания изменений (без изменений), и сборка не выполняется для операторов, которые используют созданные им методы. Если я закомментирую выделенный раздел ниже:
то код будет построен нормально. В противном случае я могу оставить этот код (который проверен и работает должным образом), но мне нужно удалить
определение. Опять же, встроенный преобразователь (т. е. BooleanToVisibilityConverter) не вызывает этой проблемы, но, похоже, существует некоторый конфликт между тем, как WPF обрабатывает эти типы ресурсов, и процессом преобразования сборки Metalama. Даже добавление пакета Metalama.Patterns.Wpf не помогло. Поэтому я также открыл вопрос на GitHub на их странице, но все еще надеюсь, что у кого-нибудь есть какие-нибудь предложения.