Как заставить XmlnsDefinition работать на локальной сборке? - PullRequest
33 голосов
/ 03 мая 2010

Я начал использовать атрибут XmlnsDefinition, чтобы связать некоторые пространства имен CLR в один xmlns для удобства в XAML.

К сожалению, похоже, что это работает только при использовании сторонних сборок. Если у меня есть файл XAML в той же сборке, что и типы в пространстве имен, на которое я ссылаюсь из XmlnsDefinition, то компилятор выдаст ошибку о типе, которого нет в определяемом мной xmlns.

Перемещение типа на стороннюю сборку устраняет проблему.

Есть ли способ использовать XmlnsDefinition в сборке и использовать ли его из этой сборки через XAML?

Ответы [ 2 ]

41 голосов
/ 06 мая 2010

К сожалению, нет. Файл XAML должен быть проанализирован перед сборкой, чтобы сгенерировать код, подразумеваемый XAML для включения в сборку. Компилятор XAML создает код за файлами (файлы, оканчивающиеся, например, на .g.cs), и эти файлы затем становятся частью сборки, в которой содержится файл XAML. Поскольку сборка еще не была собрана, компилятор XAML не может загрузить его, чтобы определить, что атрибуты XmlnsDeclaration были заданы.

1 голос
/ 29 марта 2015

Используйте clr-namespace вместо. Например:

xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...