Pregunta ¿Cómo hacer que XmlnsDefinition funcione en el ensamblado local?


Empecé a usar el atributo XmlnsDefinition para vincular algunos espacios de nombres CLR en una sola xmlns para mayor comodidad en XAML.

Desafortunadamente, parece que esto solo funciona cuando se usan ensamblajes extraños. Si tengo un archivo XAML en el mismo ensamblaje que los tipos que están en el espacio de nombres al que me refiero desde XmlnsDefinition, el compilador da un error sobre el tipo que no existe en los xmlns que estoy definiendo.

Mover el tipo a un ensamblaje foráneo soluciona el problema.

¿Hay alguna manera de usar XmlnsDefinition en un ensamblaje y hacer que se use desde ese ensamblado a través de XAML?


32
2018-05-03 19:05


origen


Respuestas:


Lamentablemente no. El archivo XAML debe analizarse antes de que se cree el ensamblado para generar el código implicado por el XAML para ser incluido en el ensamblado. El compilador XAML produce código detrás de los archivos (los archivos que terminan en, por ejemplo, .g.cs) y estos archivos se vuelven parte del ensamblaje en el que se encuentra el archivo XAML. Como el ensamblado aún no se ha creado, el compilador XAML no se puede cargar para determinar los atributos de XmlnsDeclaration se han especificado.


41
2018-05-06 04:39



Utilizar clr-namespace en lugar. Por ejemplo:

xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls

1
2018-03-29 20:14