2011-07-19 72 views
5

如何从源代码构建CodeCompileUnit?如何从源代码构建CodeCompileUnit?

什么是解析C#源代码的最佳方法?

是CodeCompileUnit一个正确的选择?怎么样?

谢谢

+0

从你的问题,它不是真的想要达到...你需要编译一些C#代码,然后运行它和/或保存它(如.dll或.exe)? – Yahia

回答

7

你就是我的倒退,CodeCompileUnit有到生成源代码。如果你已经有了源代码,那么你只需要一个继承CodeDomProvider的类来编译代码。像Microsoft.CSharp.CSharpCodeProvider或Microsoft.VisualBasic.VBCodeProvider一样。

有一些可能性,您正在询问有关解析现有的源代码文件。这就是System.CodeDom.Compiler.CodeParser的意图。这个抽象类没有现成的具体实现,从来没有。这blog post解释了原因。

4

你可以用CodeSnippetCompileUnit做到这一点是CodeCompileUnit的子类:

string source = @" 
using System; 
namespace SomeNamespace 
{ 
    public class Class0 
    {  
    } 
}"; 

var csu0 = new CodeSnippetCompileUnit(curSource); 

附加信息:

如果您有多个单位,你可以把它们放在一起生成汇编:

CodeDomProvider provider = new CSharpCodeProvider(); 
CompilerResults results = provider.CompileAssemblyFromDom(new CompilerParameters(), csu0, csu1 /*arbitrary number*/); 

当然,它有可能来自所有这些CodeSnippetCompileUnit的类相互引用。