2012-02-03 12 views
5

Si supponga di avere un progetto (ad esempio ProjectA) con un numero di classi C# e che tali classi non facciano riferimento a nessun tipo all'esterno del progetto e a quello dell'assembly System.dll. Le classi in ProjectA possono avere metodi, proprietà, campi e proprietà personalizzate. Le classi possono anche esistere in spazi dei nomi diversi.Come si usa T4 per trasformare le classi da un progetto a un altro?

Come si dovrebbe utilizzare T4 per trasformare tutte quelle classi, inclusi metodi, proprietà, campi e attributi personalizzati, da ProjectA, a un set correlato in un altro progetto (ad esempio ProgettoB).

+0

In questi casi, aggiungerei solitamente collegamenti ai file di codice, anziché clonarli. Se sei convinto di volere una copia, puoi usare le operazioni di 'File.Copy' all'interno del tuo T4. – Douglas

+0

Cosa ti fa pensare che T4 sia lo strumento giusto per il lavoro? –

+0

Vuoi mantenere lo spazio dei nomi da * ProjectA * o cambiarli in un altro spazio dei nomi (* ProjectB *)? – Matej

risposta

2

Werner, puoi certamente farlo. Una buona tecnica consiste nell'utilizzare il modello di codice di VS. Ecco alcuni esempi di esempi: http://blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx

Si utilizza il modello di codice per leggere le classi come metadati senza compilazione e quindi generare utilizzando tali metadati come input. Si potrebbe quindi voler guardare Oleg Sych's T4 Toolbox (http://t4toolbox.codeplex.com) per proiettare l'output nel progetto secondario.

+2

Anche se non ancora finalizzato, prenderemo in considerazione Roslyn: http://www.microsoft.com/download/en/details.aspx?id=27746 – FuleSnabel

+0

@GarethJ, grazie per il suggerimento. Ho cercato EnvDTE e T4 e ho trovato un paio di esempi. Chiaramente il mio lavoro è tagliato per me. – bloudraak

+0

@FuleSnabel Ho iniziato a giocare con Roslyn e mi sembra una buona idea per questo tipo di lavoro e il suo lavoro molto meno. – bloudraak

Problemi correlati