2010-10-18 11 views
10

È possibile creare applicazioni Silverlight (il file .xap, il file di prova.html, le risorse di contenuto lungo un ClientBin, le impostazioni del browser ecc.) Utilizzando solo System.CodeDom da un'app .NET standard? Significa che ho un'app console o winforms che crea app Silverlight - è possibile con System.Codedom?CodeDom e Silverlight

Ho cercato in alto e in basso e non ho trovato alcuna informazione al riguardo.

+0

Wow, questa è una domanda piuttosto interessante. Hai provato qualcosa da solo? Non riesco a pensare a una ragione per cui non sarebbe possibile, ma non lo so per certo. Immagino che una cosa importante sia assicurarsi che l'assembly generato faccia riferimento alle versioni corrette degli assembly della piattaforma Silverlight (mscorlib, System.Windows, ecc.) E non le loro controparti desktop. Un'applicazione Silverlight non è altro che una raccolta di assiemi e un file AppManifest.xaml in un file zip con estensione .xap. Sono curioso di sapere qual è lo scenario che ti porta a voler fare questo? – KeithMahoney

+0

Grazie Keith. Ho cercato MSBuild per la stessa opzione, ma la gente sembra suggerire che MSBuild è eccessivo e CodeDom.Compiler è sufficiente per situazioni normali - Non so se è il caso di Silverlight. Uno scenario sarebbe un creatore di tessere eGreeting in cui vi è una forte personalizzazione (so che questo potrebbe avere un approccio diverso, ma per motivi di argomentazione, diciamo solo che questo è il modo in cui deve essere) - un sito Web ASP.NET di base che prende un sacco di diversi parametri dall'input dell'utente e il risultato è un'app compilata Silverlight. Fatelo molte volte. – Stan

+0

Per il tuo scenario, ti suggerirei di adottare un approccio alternativo, ad es. un'app generica di Silverlight che scarica dinamicamente tutti i dati di personalizzazione in fase di runtime. Se decidi di seguire il percorso di generazione del codice: vorrei poterti dare una risposta migliore di "non c'è una ragione ovvia per cui non dovrebbe funzionare". – KeithMahoney

risposta

4

Anche se questa sarà una sfida, probabilmente dovrebbe essere possibile. Se si guarda a ciò che fa il framework stesso, ci sono alcune opzioni però.

  • Ad esempio, la classe Regex utilizza System.Reflection.Emit per compilare le tue espressioni regulare;

  • XmlSerializer utilizza System.CodeDom per generare assiemi per serializzazione e deserializzazione di XML;

  • ASP.Net chiama il compilatore C# (csc.exe) per compilare le pagine ASPX (e tutte le altre parti dell'applicazione ASP.Net) in un assieme.

Queste sono tutte le opzioni per creare un assembly valido, ordinato da molto complesso, a relativamente fattibile.

E per quanto riguarda la parte Silverlight della domanda. Questo dovrebbe essere semplicemente il caso di creare un progetto valido. Probabilmente il modo più semplice per procedere è creare il progetto Silverlight più semplice a cui puoi pensare (quindi, senza alcun contenuto) e provare ad emularlo con una delle tre opzioni. Se hai in esecuzione, aggiungi gradualmente le parti finché non hai quello che ti serve.

Problemi correlati