Estoy escribiendo código que se usa tanto en WPF como en Silverlight. En C# puedo usar "#if SILVERLIGHT"
para la compilación condicional, y funciona.XAML unificado para WPF y Silverlight con T4?
En XAML, sin embargo, debo recurrir al uso de archivos XAML completamente diferentes, ya que algunos atributos son simplemente incompatibles. Los archivos XAML son 99% similares, y mantenerlos sincronizados es una molestia.
quisiera convertirlos en una plantilla T4, por lo que puedo hacer cosas como:
<SomeControl <#=ClipsToBounds()#> />
Dónde ClipsToBounds()
produce un texto diferente para WPF y Silverlight. Los requisitos son:
- Intellisense mientras se trabaja en el XAML
- plantillas generadas en tiempo de compilación
- El proyecto debe ser autónomo y trabajar en versión estándar de Visual Studio: instalaciones de varios SDK y editores de 3 ª parte no son aceptable
- Los resultados de la ejecución de la plantilla NO deben estar en control de fuente. -
he encontrado que puedo cambiar custom tool
en un archivo XAML de MSBuild:Compile to TextTemplatingFileGenerator
y no perder Intellisense. Sin embargo, las plantillas resultantes se generan en el momento del diseño. Tener entonces generado en el momento de la construcción parece un gran dolor.
¿Alguien ha tenido una experiencia exitosa con este tipo de configuración?
¿No está utilizando una biblioteca de clases portátil una opción? –
Las bibliotecas de clases portátiles resuelven el problema del código compartido no perteneciente a la UI, deberían ser una buena opción para la capa ViewModel si se usa MVVM, no la vista. –