2011-07-19 10 views
5

¿Cómo compilar CodeCompileUnit a partir del código fuente?¿Cómo compilar CodeCompileUnit a partir del código fuente?

¿Cuál es la mejor manera de analizar un código fuente de C#?

¿Es CodeCompileUnit la selección correcta? y cómo?

Gracias

+0

De su pregunta, no es realmente lo que quiere lograr ... ¿necesita compilar algún código C# y luego ejecutarlo y/o guardarlo (como .dll o .exe)? – Yahia

Respuesta

7

Tienes que al revés, no es CodeCompileUnit a generar código fuente. Si ya tiene el código fuente, solo necesita una clase que herede CodeDomProvider para compilar el código. Como Microsoft.CSharp.CSharpCodeProvider o Microsoft.VisualBasic.VBCodeProvider.

Hay algunas probabilidades que usted está preguntando sobre analizando un archivo de código fuente existente. Eso es lo que se pretendía hacer System.CodeDom.Compiler.CodeParser. No hay implementaciones concretas existentes de esa clase abstracta, nunca habrá ninguna. Esto blog post explica por qué.

4

Puede hacerlo con CodeSnippetCompileUnit que es una subclase de CodeCompileUnit:

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

var csu0 = new CodeSnippetCompileUnit(curSource); 

Información adicional:

Si tiene varias unidades que puede ponerlos juntos para generar un ensamblado:

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

Por supuesto, es posible que las clases de todos estos CodeSnippetCompileUnit se refieran entre sí.

Cuestiones relacionadas