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?
Répondre
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.
Bien que pas encore finalisé, je considérerais Roslyn: http://www.microsoft.com/download/en/details.aspx?id=27746 – FuleSnabel
@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
@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
- 1. Comment appeler des classes de projet pour un autre projet?
- 2. Modèle T4 pour générer des classes CE Sql pour WP7
- 3. Comment utiliser Linq dans un modèle T4?
- 4. Comment utiliser BLToolkit générer des modèles T4 pour MySQL?
- 5. Transformer un projet en un projet maven dans Eclipse
- 6. Comment transformer des balises à un autre en utilisant XSLT
- 7. Création d'un projet de test pour tester des classes dans un autre projet sous Android
- 8. Comment puis-je référencer des classes dans un modèle de texte T4 qui existe déjà dans le projet en cours?
- 9. Transformer un projet en bibliothèque statique
- 10. Comment spécifier des classes d'un autre projet à une applet?
- 11. ASP.NET - Comment arrêter les classes/dll d'un projet en cours de compilation dans un autre projet
- 12. Comment utiliser 2 classes d'accessibilité ensemble dans un projet?
- 13. Comment lier des classes à un projet en éclipse
- 14. Modifier les classes modifiées générées par T4
- 15. Utiliser des templates T4 pour générer des ViewModels
- 16. Comment utiliser TagBuilder dans un projet de bibliothèque de classes?
- 17. Comment transformer un polynôme en un autre système de coordonnées?
- 18. Comment utiliser une bibliothèque/un projet personnalisé dans un modèle de texte T4?
- 19. Meilleure pratique pour utiliser un projet Mercurial dans un autre
- 20. Comment transformer une icône en une autre
- 21. Comment utiliser la bibliothèque de classes vC++ dans un autre projet?
- 22. Redéplacer des classes dans un projet
- 23. Comment transformer une classe référencée d'un autre projet en un DataContract?
- 24. Utiliser StructureMap pour créer des classes par un nom?
- 25. Comment utiliser std :: transformer avec des templates
- 26. JBuilder: Importer des classes dans un projet?
- 27. Utilisez-vous en classe T4 une classe du projet d'hébergement?
- 28. Comment inclure un projet dans un autre projet en utilisant ClassLoader
- 29. java comment utiliser les classes dans un autre paquet?
- 30. Comment pourrais-je transformer un objet 3D en un autre en utilisant des shaders?
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
Qu'est-ce qui vous fait penser que le T4 est le bon outil pour le travail? –
Voulez-vous conserver l'espace de nom de * ProjectA * ou les modifier en un autre espace de noms (* ProjectB *)? – Matej