Red de conocimiento informático - Material del sitio web - Cómo compilar y ejecutar código dinámicamente usando C# CSharpCodeProvider

Cómo compilar y ejecutar código dinámicamente usando C# CSharpCodeProvider

Cómo compilar y ejecutar código dinámicamente usando C#

Antes de comenzar, familiarícese con algunas clases y sus propiedades y métodos: CSharpCodeProvider, ICodeCompiler, CompilerParameters, CompilerResults, Assembly.

I .CSharpCodeProvider

Proporciona acceso a instancias del generador de código C# y del compilador de código. Si desea generar código VB dinámicamente, puede utilizar VBCodeProvider.

CreateCompiler(): Obtiene una instancia del compilador.

II.ICodeCompiler

Define una interfaz para invocar la compilación del código fuente o utilizar el árbol CodeDOM de un compilador específico. Cada método del compilador acepta un objeto CompilerParameters que representa el compilador y devuelve un objeto CompilerResults que representa los resultados de la compilación.

CompilerAssemblyFromSource (opción CompilerParameters, fuente de cadena): establece el ensamblado compilado a partir de una cadena que contiene el código fuente utilizando el compilador especificado.

3. CompilerParameters

Indica los parámetros utilizados para llamar al compilador.

ReferencedAssemblies: Obtiene los ensamblajes a los que hace referencia el proyecto actual.

Generar archivo ejecutable: Obtiene o establece un valor que indica si se genera un archivo ejecutable. Si esta propiedad es falsa, se generará una DLL. El valor predeterminado es falso.

Generar en memoria: Obtiene o establece un valor que indica si la salida se genera en memoria.

IV.CompilerResults

Representa los resultados de la compilación devueltos por el compilador.

CompiledAssembly: Obtiene o establece el ensamblado a compilar y el tipo de ensamblado.

V.Assembly

Este es un ensamblaje (no sé cómo describirlo).

usando Microsoft.CSharp

usando System.CodeDom

usando System.CodeDom.Compiler

usando System.CodeDom; Compilador;

usando System.CodeDom.Compiler.

espacio de nombres ConsoleApplication1

{

programa de clase pública

{

static void Main(string[] args)

{

//// 1. CSharpCodePrivoder

CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();

// 2.2.ICodeComplier

ICodeCompiler objICodeCompiler = objCSharpCodePrivoder.CreateCompiler();

// 3.CompilerParameters

CompilerParameters objCompilerParameters = new CompilerParameters();

objCompilerParameters.ReferencedAssemblies.Add(" System. dll");

objCompilerParameters.GenerateExecutable = false;

Parámetro del compilador GenerateExecutable = false;

objCompilerParameters.GenerateInMemory = true;

// 4.CompilerResults

CompilerResults cr = objICodeCompiler.CompileAssemblyFromSource = objICodeCompiler.CompileAssemblyFromSource

;