Question

J'ai écrit un assemblage pour simplifier une grande partie de ma génération de type POCO. J'ai un assemblage de base que plusieurs fichiers TT incluent et utilisent pour générer le code.

La raison pour laquelle j'ai fait cela est parce que peu importe quelle extension que j'essaie (Devart T4, Tangible-T4 ou Visual T4), aucune n'est aussi bonne que l'intellisense et le support offerts par l'éditeur C # de Visual Studio, donc l'écriture de la génération de code en pure C # améliore L'expérience beaucoup.

Le plus gros problème auquel je suis confronté est le fait que les classes d'aide à l'entité (par exemple Accessibility, CodeGenerationTools, MetadataTools etc) sont définis à l'intérieur d'un fichier TTinclude et non d'un assemblage; Actuellement, je dois réécrire une grande partie de la fonctionnalité que ces classes fournissent afin qu'elle soit utilisable à partir d'un assemblage.

Ma question est: pourquoi l'équipe du cadre d'entité a-t-elle décidé d'utiliser un fichier TTinclude plutôt que de certains assemblages compilés? L'utilisation de l'approche des assemblages semble avoir été beaucoup plus utilisable dans plus de circonstances et n'aurait toujours pas affecté la génération de code T4 (comme au lieu d'utiliser <#@ include #> ce serait <#@ assembly #>).

Je me demande quelle serait la meilleure approche pour résoudre ce serait, j'ai envisagé de courir EF.Utility.CS.ttinclude à travers TextTransform.exe Et puis en prenant le C # généré et en compilant cela, serait-ce conseillé?

Merci, Luke

Mise à jour

Actuellement, ce que j'ai fait était d'ajouter EF.Utility.CS.ttinclude à mon projet, définissez l'outil personnalisé sur le fichier sur TextTemplatingFilePreprocessor. Cela générera le code contenant les classes. J'ai ensuite copié ce fichier CS, supprimé la classe responsable de l'écriture de sortie (elle a la méthode TransformText()) et compilé dans un assemblage. Je peux maintenant utiliser les classes d'utilité du cadre d'entité dans mon assemblage.

Était-ce utile?

La solution

La raison de l'utilisation ttinclude Au lieu de l'assemblage, c'est le même que l'utilisation de T4 au lieu d'un outil personnalisé pour la génération de classe (c'est ce que vous faites réellement et ce que la plupart des concepteurs ont utilisé précédemment). T4 et ttinclude peut être changé. Vous pouvez copier ttinclude et créez un petit changement et incluez-le dans le T4 principal par base du projet.

D'ailleurs. Savez-vous qu'il existe des dizaines de milliers de programmeurs qui peuvent écrire un code sans aucune Intellisense;) Pire soutien de l'intellisense n'est pas une raison d'abandonner en utilisant des modèles T4.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top