2009-08-25 8 views
0

Ich habe die Anforderung, einige CS-Klassen mit einer DSL zu generieren und zu lesen, ich habe eine Methode zum Lesen der CS-Dateien mit EnvDTE angenommen und mein Kollege hat CodeDom verwendet, um die CS zu produzieren Dateien.Gibt es Unterschiede zwischen EnvDTE oder CodeDom beim Generieren von Code

Ist es nur Zucker oder gibt es einen großen Unterschied zwischen ...

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

und

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

ich die EnvDTE subjektiv bevorzugen, aber nicht wissen, was der ‚echte‘ Unterschied.

Info: C#, Visual Studio 2010

Antwort

0

Mit EnvDTE, ich bin nicht sicher, dass Sie AST wie möglich mit CodeDOM manipulieren können. Ich würde mit CodeDOM oder NRefactory von SharpDevelop Projekt gehen, das ein anderer Open Source C# Parser/Generator ist.

+0

Vielen Dank für Ihre Antwort, ich bin noch nicht über die Abkürzung AST gekommen. –

+1

AST steht für Abstract Syntax Tree, was im Grunde eine Baumstruktur darstellt, die den Code darstellt und es Ihnen ermöglicht, ihn (mehr oder weniger) stark typisiert zu manipulieren. http://en.wikipedia.org/wiki/Abstract_syntax_tree –

0

CodeDOM hat keine Möglichkeit, Quellcode zum Erstellen eines AST zu lesen. Wenn Sie nur C# generieren müssen, wird CodeDOM im Lieferumfang des .NET-Frameworks enthalten. Daher muss Ihre Anwendung Visual Studio nicht installieren.