2011-05-16 4 views
1

Je veux générer un code de mon dbml (LINQ to SQL) fichier, le fichier dbml est placé dans de nombreuses régions de mon projet j'ai donc écrit un outil personnalisé à cet effetDeux outils personnalisés pour un seul fichier?

Mais le problème est que dbml a déjà contenu outil MSLinqToSQLGenerator personnalisé,

Alors connaissez-vous un moyen de définir deux outils personnalisés pour un fichier, Si non, Faites-moi savoir votre idée que

Répondre

2

Visual studio soutiendra un seul « outil personnalisé » par fichier, mais vous pouvez ajouter une étape de pré-compilation pour exécuter d'autres outils contre tout ce que vous voulez. Par exemple, j'ai l'étape de précompilation suivante dans l'onglet "Build Events" de l'un de mes projets.

"$(DevEnvDir)..\..\..\Common Files\Microsoft Shared\TextTemplating\10.0\TextTransform" "$(ProjectDir)DataContext\Northwind.proxy.tt" 

Il y a beaucoup de pathing par rapport passe ici afin de trouver l'outil de ligne de commande T4, mais vous voyez l'idée. Ce fichier T4 particulier compte sur être dans le même répertoire que le fichier .dbml qu'il lit pour générer sa sortie.

Avant la compilation du projet, vous pouvez exécuter n'importe quel outil externe de votre choix. Assurez-vous juste qu'après la première exécution, vous incluez la sortie de l'outil dans le projet. Après cela, puisque le fichier est modifié dans le cadre d'une étape de pré-compilation, il sera toujours mis à jour dans chaque version.

2

Vous obtiendrez un contrôle approprié sur le T4 si vous incluez le générateur LINQ to SQL T4 sous la responsabilité de votre modèle.

Si j'ai bien compris, vous voulez conserver le comportement par défaut du générateur .dbml, mais aussi ajouter le vôtre. Cela a semblé un peu "vieux", et je n'ai pas utilisé personnellement LINQ to SQL depuis un certain temps, mais j'ai utilisé ce remplacement tel quel du générateur T4, qui a produit l'équivalent du générateur .dbml standard.

https://github.com/damieng/L2ST4

Je ne sais pas si c'est à jour avec la version VS 2010, mais vous pouvez toujours comparer la norme .dbml code généré et cette sortie T4 et apporter des modifications appropriées pour obtenir des résultats identiques.

Bien sûr, vous pouvez simplement avoir plusieurs générateurs différents, et simplement les exécuter avec "Transformer tous les modèles", mais en fonction de votre question, vous voudriez que le générateur soit attaché à l'outil personnalisé spécifique au fichier.

Vous pourriez vouloir vérifier (à moins qu'il ne vous soit déjà familier) également la boîte à outils T4 https://github.com/olegsych/T4Toolbox qui ajoute l'outil personnalisé "T4ScriptFileGenerator" à un fichier. Il exécute effectivement le code T4 lorsque le fichier change.

Questions connexes