Spero di aver capito cosa hai chiesto, ma direi che puoi anche far funzionare T4 in SL. A T4 può essere chiesto di generare ciò che a volte è chiamato modelli di runtime. Ho definito il mio modello (molto semplice) e l'ho aggiunto al mio progetto Silverlight.
<#
for (var iter = 0; iter < 10; ++iter)
{
#>
This is just a test: #<#=iter#>
<#
}
#>
Normalmente genererebbe un output del tipo:
This is just a test: #0
This is just a test: #1
This is just a test: #2
This is just a test: #3
This is just a test: #4
This is just a test: #5
This is just a test: #6
This is just a test: #7
This is just a test: #8
This is just a test: #9
Ma in questo caso mi piace per generare il codice che genera tale uscita cioè un modello di esecuzione. Per farlo, passo lo strumento personalizzato su: TextTemplatingFilePreprocessor
Ora il template genera il codice che genera quell'output. Se ti allontani da hostspecific = true non ottieni le dipendenze di Visual Studio. Estendendo la classe parziale con le variabili membro e facendole riferimento dal file modello, è possibile modificare il comportamento sul modello in runtime.
Il problema in Silverlight è che in silverlight mancano le classi: System.CodeDom.Compiler.CompilerError e System.CodeDom.Compiler.CompilerErrorCollection.
ho lavorato intorno a quel creando le mie classi per questo (solo per questo scopo):
namespace System.CodeDom.Compiler
{
public class CompilerError
{
public string ErrorText;
public bool IsWarning;
}
public class CompilerErrorCollection : List<CompilerError>
{
}
}
Ora il mio modello compila e ho appena come questo dalla mia applicazione Silverlight per produrre l'output:
var runtimeTemplate = new MyRuntimeTemplate();
string output = runtimeTemplate.TransformText();
Controllare http://stackoverflow.com/questions/3628895/is-it-possibile-per-utilizzare-razor-view-engine-outside-asp-net –
Quando si dice "funziona solo per .NET" si significa che non funziona in Silverlight? – FuleSnabel
@FuleSnabel sì, sei corretto, ho corretto questo sulla domanda – Ariel