2009-08-25 4 views
0

J'ai l'obligation de générer et de lire certaines classes CS avec un DSL, j'ai adopté une méthode pour lire les fichiers CS en utilisant EnvDTE et mon collègue a utilisé CodeDom pour produire le CS des dossiers.Y at-il des différences entre EnvDTE ou CodeDom lors de la génération Code

Est-il juste de sucre ou est-il une grande différence entre ...

codeClass.AddFunction("DoSomething", vsCMFunction.vsCMFunctionFunction, "bool"); 

et

 CodeMemberMethod membMethod = new CodeMemberMethod(); 
     membMethod.Attributes = MemberAttributes.Static; 
     membMethod.ReturnType = new CodeTypeReference("bool"); 
     membMethod.Name = "DoSomething"; 

Je préfère subjectivement le EnvDTE mais je ne sais pas ce que la différence « réel » est.

Info: C#, Visual Studio 2010

Répondre

0

En utilisant EnvDTE, je ne suis pas sûr que vous pouvez manipuler AST comme vous pouvez avec CodeDOM. Je voudrais aller avec CodeDOM, ou NRefactory du projet SharpDevelop, qui est un autre parseur/générateur C# open source.

+0

Merci pour votre réponse, je n'ai jamais rencontré l'acronyme AST auparavant? –

+1

AST est synonyme de Abstract Syntax Tree, qui est essentiellement une structure arborescente qui représente le code et vous permet de le manipuler d'une manière (plus ou moins) fortement typée. http://en.wikipedia.org/wiki/Abstract_syntax_tree –

0

CodeDOM ne dispose pas d'un moyen de lire le code source pour produire un AST. Si tout ce que vous devez faire est de générer C#, alors CodeDOM est livré avec le framework .NET et votre application ne nécessiterait donc pas l'installation de Visual Studio.

Questions connexes