2012-02-03 10 views
5

Supongamos que tengo un proyecto (digamos Proyecto A) con un número de clases C# y que esas clases no hacen referencia a ningún tipo fuera del proyecto y del ensamblaje System.dll. Las clases en ProjectA pueden tener métodos, propiedades, campos y propiedades personalizadas. Las clases también pueden existir dentro de diferentes espacios de nombres.¿Cómo se usaría T4 para transformar clases de un proyecto a otro?

¿Cómo se puede usar T4 para transformar todas esas clases, incluidos métodos, propiedades, campos y atributos personalizados, desde ProjectA, a un conjunto relacionado en otro proyecto (por ejemplo, ProjectB).

+0

En tales casos, normalmente agregaría enlaces a los archivos de código, en lugar de clonarlos. Si está convencido de que quiere una copia, puede usar las operaciones 'File.Copy' dentro de su T4. – Douglas

+0

¿Qué te hace pensar que T4 es la herramienta adecuada para el trabajo? –

+0

¿Desea mantener el espacio de nombres de * ProjectA * o cambiarlos a otro espacio de nombres (* ProjectB *)? – Matej

Respuesta

2

Werner, ciertamente puede hacer esto. Una buena técnica es usar el Modelo de Código de VS. Aquí hay algunos consejos para ejemplos: http://blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx

Utilizaría el modelo de código para leer las clases como metadatos sin compilar y luego generar usando esos metadatos como entrada. Es posible que desee consultar la T4 Toolbox de Oleg Sych (http://t4toolbox.codeplex.com) para proyectar la salida en el proyecto secundario.

+2

Aunque todavía no está finalizado, consideraría Roslyn: http://www.microsoft.com/download/en/details.aspx?id=27746 – FuleSnabel

+0

@GarethJ, gracias por la sugerencia. He buscado EnvDTE y T4 y he encontrado algunos ejemplos. Claramente mi trabajo está cortado para mí. – bloudraak

+0

@FuleSnabel Empecé a jugar con Roslyn y parece una buena opción para este tipo de trabajo y es mucho menos trabajo. – bloudraak

Cuestiones relacionadas