生成代码时,EnvDTE或CodeDom之间是否存在差异

时间:2009-08-25 12:38:18

标签: c# code-generation codedom envdte

我需要使用DSL生成和读取一些CS类,我采用了一种使用EnvDTE读取CS文件的方法,我的同事使用CodeDom生成CS文件。

它只是糖还是......之间存在很大差异?

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

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

我主观上喜欢EnvDTE,但不知道“真正的”区别是什么。

信息:C#,Visual Studio 2010

2 个答案:

答案 0 :(得分:0)

使用EnvDTE,我不确定你可以像使用CodeDOM那样操纵AST。我会使用CodeDOM或来自SharpDevelop项目的NRefactory,这是另一个开源的C#解析器/生成器。

答案 1 :(得分:0)

CodeDOM无法读取源代码以生成AST。如果您只需要生成C#,那么CodeDOM随.NET框架一起提供,因此您的应用程序不需要安装Visual Studio。