2009-08-25 55 views
0

我有要求生成和閱讀一些CS類與DSL,我採用了一種方法使用EnvDTE閱讀CS文件,我的同事使用CodeDom生成CS文件。生成時EnvDTE或CodeDom之間有區別代碼

難道僅僅是白糖還是有一個很大的區別...

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

使用EnvDTE,我不知道,你可以操縱AST像您可以用CodeDOM的。我會使用CodeDOM或SharpDevelop項目中的NRefactory,這是另一個開源的C#解析器/生成器。

+0

謝謝您的回覆,我之前沒有遇到AST的縮寫詞嗎? – 2009-08-25 13:45:20

+1

AST代表抽象語法樹,它基本上是一個代表代碼的樹結構,並允許您以(或多或少)強類型的方式處理它。 http://en.wikipedia.org/wiki/Abstract_syntax_tree – 2009-08-25 13:50:25

0

CodeDOM無法讀取源代碼來生成AST。如果您只需生成C#,則CodeDOM將隨.NET框架一起提供,因此您的應用程序不需要安裝Visual Studio。

相關問題