Puis-je redistribuer le moteur Microsoft T4 avec mon produit? [fermé]

StackOverflow https://stackoverflow.com/questions/443027

  •  22-07-2019
  •  | 
  •  

Question

Je génère du code de manière dynamique en utilisant actuellement String.Format et en incorporant des espaces réservés - mais reformater le code C # pour l'utiliser comme modèle est un problème, et je pense que l'utilisation d'un modèle T4 serait préférable.

Toutefois, la génération de code se produisant sur un système en cours d'exécution, j'ai besoin de savoir que je peux redistribuer le moteur Microsoft T4 en toute sécurité et en toute légalité avec mon produit.

Quelqu'un d'autre a fait ça? Ou connaissez la réponse (légale)?

Était-ce utile?

La solution

Il semble qu'il y ait bientôt une autre option.

Hier, Miguel de Icaza a publié un article sur l'intégration de T4 dans MonoDevelop. Je m'attends donc à ce qu'il y ait un ensemble d'outils T4 équivalent mono à tout moment.

Voir: http://tirania.org/blog/archive/2009/ Mars-10.html

Autres conseils

Vous pouvez redistribuer T4 dans le cadre de DSLToolsRedist , toutefois, il faut que Visual Studio 2005 Standard Edition ou une version ultérieure soit déjà installé. Je ne pense pas que T4 puisse être légalement redistribué sans Visual Studio pour le moment. Le scénario que vous avez décrit sera directement pris en charge dans Visual Studio 2010

J'ai la réponse et malheureusement non, comme l'a suggéré Oleg. (Excellent travail sur T4 en passant Oleg). Vous ne pouvez pas redistribuer T4 pour le moment - cela fait partie de VS. Dans VS2010, il sera possible de précompiler des modèles T4, puis de les redistribuer avec votre application sans application de dépendance T4.

Par souci de clarté, la réponse officielle est que vous ne pouvez pas distribuer le moteur Microsoft T4 séparément de Visual Studio.

Toutefois, à partir de Visual Studio 2010, vous pouvez utiliser et redistribuer les modèles précompilés, qui ne dépendent pas de Visual Studio.

Vous pouvez également utiliser T4 en dehors de Visual Studio sur un ordinateur sur lequel Visual Studio est installé.

Vous pouvez également obtenir une licence et redistribuer le shell isolé Visual Studio sans frais, et l'utiliser comme hôte pour vos outils - il inclut le T4.

À partir de Visual Studio 2010 SP1, vous êtes autorisé à copier le T4 sur votre machine de construction via la licence dans buildserver.txt dans votre répertoire d'installation du VS.

J'ai mon propre système générateur de code de modèle, compilant le code dans un domaine d'application distinct d'avant la sortie de VS2008.

Si cela vous intéresse, postez un commentaire et je posterai une URL sur le code.

Le code pour utiliser mon moteur de templates est ici , vous pouvez y accéder avec un navigateur Web ou pointer une Subversion client à elle. Remarque, le lien qui commence par ici s'arrête vraiment après le mot, mais le moteur de rendu WMD côté serveur perd le lien sur le texte suivant.

Notez que si vous copiez simplement le fichier unique dans cet espace de noms, il ne se compilera pas tout seul, il nécessite certaines opérations dans LVK.Delegates et LVK.Scripting, les espaces de noms remontent de quelques niveaux à partir du lien ci-dessus. Si vous ne voulez pas engloutir toute la bibliothèque, vous devrez extraire les morceaux dont il se plaint un à un jusqu'à la compilation.

Il existe également une version binaire de la bibliothèque à / LVK_3_5 / trunk / Binaries / Debug / LVK dans le même référentiel. Si vous le téléchargez, il vous suffit de simplement y ajouter une référence et de vérifier la classe LVK.Text.Templates.TextTemplate .

Malheureusement, je n'ai pas d'exemple pour ma bibliothèque pour le moment.

Fondamentalement, pour utiliser un modèle:

TextTemplate tt = new TextTemplate();
tt.Source = "... code here, check example file above ...";
tt.Compile();
String output = tt.Generate(singleObjectParameter);

Dans le modèle, qui contient essentiellement tout le code inséré dans une seule méthode (ce qui signifie que ce n'est pas aussi performant que T4 en termes de possibilité d'ajouter facilement des méthodes, mais vous pouvez utiliser des méthodes anonymes). avoir accès à l'objet de données qui y est passé en tant que paramètre nommé data.

Donc, pour simplement sortir le contenu du paramètre passé:

<%= data %>

Pour le répéter:

<% for (Int32 index = 0; index < 10; index++) { %>
<%= data %>
<% } %>

Si vous avez des questions, envoyez-les à mon adresse électronique à l'adresse lasse@vkarlsen.no.

Je me suis rappelé que cela était arrivé en 2006 (avant que je sache ce que T4 était!) et je suis allé chercher et j'ai trouvé ceci http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/1ab0bf3f-2810-4ff75 -900b98dee8e2 / Malheureusement, le lien gotdotnet est rompu. Difficile de dire dans ce fil qu’ils conviennent que vous pouvez légalement héberger en dehors de la T4 une VS et redistribuer - ou non.

C’est vraiment dommage, mais comme le souligne Oleg, si cela n’a pas été testé, comment le relâcher?

Lassevk, cela m’intéresse certes. Je pensais à réutiliser un moteur de template que j’ai construit il ya environ 10 ans, mais je suis toujours prêt à vivre plus facilement!

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