如何从源代码构建CodeCompileUnit?

Ami*_*yan 6 c# codedom

如何从源代码构建CodeCompileUnit?

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

CodeCompileUnit是正确的选择吗?和怎么样?

谢谢

Han*_*ant 8

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

您有一些关于解析现有源代码文件的可能性.这就是System.CodeDom.Compiler.CodeParser打算做的事情.该抽象类没有现有的具体实现,永远不会有任何实现.这篇博客文章解释了原因.


use*_*754 5

您可以使用 CodeSnippetCompileUnit 来完成,它是 CodeCompileUnit 的子类:

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

var csu0 = new CodeSnippetCompileUnit(curSource);
Run Code Online (Sandbox Code Playgroud)

附加信息:

如果您有多个单元,您可以将它们放在一起以生成一个组件:

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

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