我需要使用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
答案 0 :(得分:0)
使用EnvDTE,我不确定你可以像使用CodeDOM那样操纵AST。我会使用CodeDOM或来自SharpDevelop项目的NRefactory,这是另一个开源的C#解析器/生成器。
答案 1 :(得分:0)
CodeDOM无法读取源代码以生成AST。如果您只需要生成C#,那么CodeDOM随.NET框架一起提供,因此您的应用程序不需要安装Visual Studio。