Cómo compilar y ejecutar código dinámicamente usando C# CSharpCodeProvider
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
;