如何从源代码构建CodeCompileUnit?

时间:2011-07-19 22:11:25

标签: c# codedom

如何从源代码构建CodeCompileUnit?

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

CodeCompileUnit是正确的选择吗?和如何?

由于

3 个答案:

答案 0 :(得分:8)

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

您可能会询问解析现有源代码文件的可能性。这就是System.CodeDom.Compiler.CodeParser打算做的事情。该抽象类没有现有的具体实现,永远不会有任何实现。这个blog post解释了原因。

答案 1 :(得分:4)

你的问题有点模糊。你在找教程吗?您是否正在尝试实施特定任务?具体问题是Stackoverflow的本质。除此之外,我会给你一些可能有助于开始的地方:

答案 2 :(得分: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中的类都可能相互引用。

相关问题