2010-11-02 28 views
0

J'ai créé un AddInHost avec lequel je peux étendre les commandes VS Ide (clic droit sur SolutionExplorerMenu).Génération de ClassTemplate dans VS 2008 avec T4 ou autre technologie

Maintenant, je veux utiliser l'AddIn pour générer du code à partir d'un modèle. J'ai lu de nombreux articles sur la génération de code T4 et essayé quelques modèles simples, mais je ne vois pas comment je peux utiliser la technique T4 dans mon AddIn.

Pour les modèles j'ai besoin de spécifier certains paramètres que je peux utiliser dans le modèle. J'ai besoin de paramètres pour

  • Namespace
  • ClassName
  • Methodcollection
  • PropertyCollection

J'ai essayé d'utiliser

<#@ property name="ClassName" type="System.String" processor="PropertyProcessor" #> 

mais après avoir lu quelques articles je pensais que ce shoul d ne pas être travaillé correctement.

Mon problème est que je ne peux pas trouver une solution pour travailler avec T4 et mon AddIn.

Toutes les commandes de l'Addin ont une méthode "Perform" où toute l'implémentation spécifique à la commande est écrite. Dans la commande j'ai une référence à l'hôte (= VS IDE) afin que je puisse utiliser complètement le modèle IDE.

Comment puis-je utiliser T4 dans mon AddIn pour créer un fichier basé sur un modèle?
Comment est-ce que je devrais le faire?
Dois-je ajouter le fichier au projet de destination via ProjectItems.AddFromFile() ou puis-je utiliser les fonctionnalités de T4?

Je suis un peu confus comment je peux mettre en œuvre mes exigences.

Merci beaucoup.

Répondre

0

Utilisez le service ITextTemplating. Voici why.

+0

C'est ainsi que je l'ai essayé avant, mais je n'ai pas vu comment je peux combiner le ITextTemplating avec mon CommandAction? Devrais-je créer mon "ITextTemplatingEngineHost" personnalisé lorsque j'utilise le moteur? Dois-je créer le moteur/hôte via ServiceProvider ou directement via une "nouvelle" initialisation? – Khh