如何从源代码构建CodeCompileUnit?
解析C#源代码的最佳方法是什么?
CodeCompileUnit是正确的选择吗?和如何?
由于
答案 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中的类都可能相互引用。