2012-02-03 3 views
5

Supposons que j'ai un projet (disons ProjectA) avec un certain nombre de classes C# et que ces classes ne référencent aucun type en dehors du projet et de l'assembly System.dll. Les classes de ProjectA peuvent avoir des méthodes, des propriétés, des champs et des propriétés personnalisées. Les classes peuvent également exister dans différents espaces de noms. Comment utiliser T4 pour transformer toutes ces classes, y compris les méthodes, les propriétés, les champs et les attributs personnalisés, à partir de ProjectA, en un ensemble connexe dans un autre projet (par exemple, ProjectB).Comment utiliser T4 pour transformer des classes d'un projet en un autre?

+0

Dans de tels cas, j'ajouterais habituellement des liens aux fichiers de code, plutôt que de les cloner. Si vous êtes convaincu que vous voulez une copie, vous pouvez utiliser les opérations 'File.Copy' dans votre T4. – Douglas

+0

Qu'est-ce qui vous fait penser que le T4 est le bon outil pour le travail? –

+0

Voulez-vous conserver l'espace de nom de * ProjectA * ou les modifier en un autre espace de noms (* ProjectB *)? – Matej

Répondre

2

Werner, vous pouvez certainement le faire. Une bonne technique consiste à utiliser le modèle de code de VS. Il y a quelques pointeurs vers des exemples ici: http://blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx

Vous utiliseriez le modèle de code pour lire les classes en tant que métadonnées sans compiler, puis générer en utilisant ces métadonnées en entrée. Vous pouvez ensuite regarder la boîte à outils T4 d'Oleg Sych (http://t4toolbox.codeplex.com) pour projeter la sortie dans le projet secondaire.

+2

Bien que pas encore finalisé, je considérerais Roslyn: http://www.microsoft.com/download/en/details.aspx?id=27746 – FuleSnabel

+0

@GarethJ, merci pour la suggestion. J'ai cherché EnvDTE et T4 et j'ai trouvé quelques exemples. Clairement mon travail est découpé pour moi. – bloudraak

+0

@FuleSnabel J'ai commencé à jouer avec Roslyn et cela me semble être un bon choix pour ce genre de travail et beaucoup moins de travail. – bloudraak

Questions connexes