Sto scrivendo il codice che viene utilizzato sia in WPF che in Silverlight. In C# posso usare "#if SILVERLIGHT"
per la compilazione condizionale e funziona.XAML unificato per WPF e Silverlight utilizzando T4?
In XAML, tuttavia, devo fare ricorso a file XAML completamente diversi, poiché alcuni attributi sono semplicemente incompatibili. I file XAML sono del 99% simili e tenerli sincronizzati è una seccatura.
vorrei convertirli in un modello T4, in modo da poter fare le cose come:
<SomeControl <#=ClipsToBounds()#> />
Dove ClipsToBounds()
produce un testo diverso per WPF e Silverlight. I requisiti sono:
- Intellisense durante il lavoro sui modelli XAML
- generate al momento della compilazione
- Il progetto deve essere autonomo e il lavoro sulla versione di scorta di Visual Studio: installazioni di vari SDK e redattori 3rd party non sono accettabili
- I risultati dell'esecuzione del modello NON devono essere nel controllo sorgente. -
ho scoperto che posso cambiare custom tool
su un file XAML da MSBuild:Compile to TextTemplatingFileGenerator
e non perdere Intellisense. Tuttavia, i modelli risultanti vengono generati in fase di progettazione. Avere poi generato in fase di costruzione sembra un grande dolore.
Qualcuno ha avuto esperienza di successo con questo tipo di installazione?
Non è possibile utilizzare una libreria di classi portatile? –
Le librerie di classi portatili risolvono il problema del codice non UI condiviso, dovrebbero essere adatte al livello ViewModel se si utilizza MVVM, non la vista. –