Compilar en tiempo de ejecucion

13/01/2005 - 02:01 por .:: MaStErDoN ::. | Informe spam
Hola,
quiero saber como se hace para compilar sierto codigo en tiempo de
ejecucion, o sea por ejemplo que un programa que se este ejecutando compile
el codigo de una dll por ejemplo

gracias..

andres
 

Leer las respuestas

#1 Pedro Luna Montalvo, MVP
13/01/2005 - 03:29 | Informe spam
Te incluyo un mensaje anterior que respondi sobre este mismo tema.
En el, se hacia referencia a que el codigo fuente se encontraba en una base
de datos, de donde se extraia y se queria ejecutar dinamicamente


From: "Pedro Luna Montalvo, MVP"
Newsgroups: microsoft.public.es.dotnet.vb
Sent: Monday, November 15, 2004 8:51 PM
Subject: Re: codigo almacenado


Saludos Gerardo,

Si bien no especificas en que lenguaje estaria escrito el codigo
almacenado, asumo que te refieres a VB.NET.

El siguiente es un simple codigo de una aplicacion de consola que te
muestra una alternativa.


Imports System.CodeDom.Compiler
Imports System.Reflection

Module Module1

' Esta funcion deberia retornar el codigo desde la base de datos
Function ObtenerCodigoDesdeBaseDatos() As String
Return "Class ClaseDinamica" & ControlChars.CrLf & _
"Sub Saludar(Mensaje As String)" &
ControlChars.CrLf & _
"System.Console.WriteLine(Mensaje)" &
ControlChars.CrLf & _
"End Sub" & ControlChars.CrLf & _
"End Class"
End Function


Sub Main()
' Obtener un CodeCompiler que corresponde a VB.NET
Dim Compilador As ICodeCompiler
Compilador = (New VBCodeProvider).CreateCompiler()

' Preparar las opciones del compilador
Dim parametros As New CompilerParameters()
parametros.GenerateInMemory = True ' Compilar en memoria!!!

' Compilar el código fuente!!
Dim resultado As CompilerResults
resultado = Compilador.CompileAssemblyFromSource(parametros,
ObtenerCodigoDesdeBaseDatos())

' Cargar el ensamblado y obtener el tipo
Dim tipo As Type =
resultado.CompiledAssembly.GetType("ClaseDinamica")

' Crear la instancia
Dim instancia As Object = Activator.CreateInstance(tipo)

' Invocar el método que muestra mensaje en consola
Dim metodo As MethodInfo = tipo.GetMethod("Saludar")
metodo.Invoke(instancia, New Object() {"Logramos compilar
codigo dinamicamente!!"})
End Sub
End Module

Espero te sirva


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu




".:: MaStErDoN ::." escribió en el mensaje
news:OQB9etQ%
Hola,
quiero saber como se hace para compilar sierto codigo en tiempo de
ejecucion, o sea por ejemplo que un programa que se este ejecutando
compile el codigo de una dll por ejemplo

gracias..

andres

Preguntas similares