Cómo implementar un motor de script en .NET
Descubrimos que hay al menos dos formas diferentes de utilizar un motor de script en .NET:
De hecho, CodeDom no es realmente un motor de script, en realidad es un compilador. Pero podemos usar CodeDom para simular el motor de script.
El uso del método Emit también puede lograr el objetivo de generar código ejecutable dinámicamente, y el código generado por Emit no necesita ser compilado, por lo que es más rápido. Pero lo que Emit inserta es en realidad código ensamblador y no puede considerarse un lenguaje de programación.
Este artículo presentará cómo utilizar CodeDom para generar dinámicamente código ejecutable.
Cómo implementar un motor de script en .NET (artículo de CodeDom) Blog de Mu Feng
1. Construya el compilador
Establezca los parámetros del compilador
Los parámetros del compilador deben configurarse en CompilerParameters:
CompilerOptions se usa para configurar los parámetros de la línea de comandos del compilador
IncludeDebugInformation se usa para indicar si se debe generar el ensamblado en la memoria
GenerateInMemory se usa para indicar si se genera el ensamblado en la memoria
GenerateExecutable se usa para indicar si el tipo de ensamblado generado es exe o dll
OutputAssembly se usa para indicar el tipo del archivo de programa generado Nombre (solo cuando GenerateInMemory es falso)
ReferencedAssemblies se usa para agregar una referencia al ensamblaje
Por ejemplo:
theParameters. ReferencedAssemblies.Add("System.dll ");
Crear un compilador para el idioma especificado
El compilador debe ser generado por CodeDomProvider para el idioma especificado.
La siguiente es una lista de algunos .NET CodeDomProviders:
vb.net Microsoft.VisualBasic.VBCodeProvider
C# Microsoft.CSharp.VBodeProvider
C# Microsoft.CSharp.VBodeProvider
C# Microsoft.CSharp.VBodeProvider
jscript Microsoft.JScript.JScriptCodeProvider
J# Microsoft.VJSharp.VJSharpCodeProvider p>
Tomando C# como ejemplo, el código para crear un compilador de C# es el siguiente:
// NET 1.1/1.0
Compilador ICodeCompiler = nuevo Microsoft.CSharp. CSharpCodeProvider().CreateCompiler( );
//.NET 2.0
Compilador ICodeCompiler = (ICodeCompiler) nuevo Microsoft.CSharp.CSharpCodeProvider().CreateCompiler();
//. NET 2.0
ICodeCompiler = (ICodeCompiler) nuevo Microsoft.CSharp.CSharpCodeProvider().CreateCompiler()
/CodeCompiler = (ICodeCompiler) nuevo Microsoft.CSharpCodeProvider( );
El siguiente es un ejemplo completo de cómo crear un compilador:
// lt; resumengt;
// Crear un compilador para el lenguaje de scripting correspondiente
// lt;/ resumengt;
private void createCompiler(string strLanguage, bool debugMode, string strAssemblyFileName)
{
this.CodeCompiler = ( ICodeCompiler) new Microsoft.CSharpCodeProvider() ;
Aquí hay un ejemplo completo de cómo crear un compilador:
// lt;/summarygt;