• Domingo 22 de Diciembre de 2024, 20:56

Autor Tema:  Generar Codigo En Tiempo De Ejecucion  (Leído 1074 veces)

CESARAR84

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Generar Codigo En Tiempo De Ejecucion
« en: Domingo 17 de Junio de 2007, 20:23 »
0
Espero su ayuda porfavor.
Yo he podido utilizar el CodeDom para hacer un program en consola que genera un exe.
Sin embargo, son solo pantallas negras (cosnola logicamnt).
Mi Pregunta es si alguien me podria guiar en la forma de crear una aplicacion windows utilizando el codeDom, o talves habra otra forma ?
yo coloco este codigo:

---------------------------------------------------------
Dim codeProvider As New VBCodeProvider
Dim icc As ICodeCompiler = codeProvider.CreateCompiler
Dim Output As String = "Out.exe"
Dim ButtonObject As Button = CType(sender, Button)

textBox2.Text = ""
Dim parameters As New CompilerParameters
Dim results As CompilerResults 'Make sure we generate an EXE, not a DLL
parameters.GenerateExecutable = True
parameters.OutputAssembly = Output
results = icc.CompileAssemblyFromSource(parameters, textBox1.Text)

If results.Errors.Count > 0 Then 'There were compiler errors
textBox2.ForeColor = Color.Red
Dim CompErr As CompilerError
For Each CompErr In results.Errors
textBox2.Text = textBox2.Text & _
"Line number " & CompErr.Line & _
", Error Number: " & CompErr.ErrorNumber & _
", '" & CompErr.ErrorText & ";" & _
Environment.NewLine & Environment.NewLine
Next
Else 'Successful Compile
textBox2.ForeColor = Color.Blue
textBox2.Text = "Success!" 'If we clicked run then launch the EXE
If ButtonObject.Text = "Run" Then
Process.Start(Output)
End If
End If
End Sub
------------------------------codigo del textbox1.text----------------------
Imports System

Module Module1

Sub Main()
Console.WriteLine("Hello World!")
Console.WriteLine("Press ENTER")
Console.ReadLine()
End Sub

End Module
-----------------------------------------------
y mi aplicacion me genera un ejecutable pero pantallita negra nomas (consola logicamnt), pero deseo crear un formulario para windows , al menos que contenga un botoncito , ...

Gracias de antemano..

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Generar Codigo En Tiempo De Ejecucion
« Respuesta #1 en: Lunes 2 de Julio de 2007, 07:54 »
0
Te genera una consola porque eso es lo que le indicas...en  
Citar
Module Module1

Sub Main()
Console.WriteLine("Hello World!")
Console.WriteLine("Press ENTER")
Console.ReadLine()
End Sub

End Module

toda consola debe contener un método main. Si quieres ventanas debes tener 'formularios'...
Yo no se usar el codeDom, ni sé por qué lo usas en vez del IDE de VB, pero siguiendo lo que aparece en tu código debería ser algo similar a esto:
Aunque pienso que faltaría la rutina del initialize donde queda definido el formulario...(y todos los controles previos que tengas en el diseño del formulario.)

 
Código: Text
  1.  
  2. Public Class miFormulario  
  3.     Friend WithEvents Button1 As System.Windows.Forms.Button
  4.  
  5.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.       'aquí va el código a ejecutar tras arrancar la aplicación
  7.      'aquí puedes colocar el código para generar tu botón o puedes ya tenerlo creado como en el siguiente apartado.
  8.         Me.Button1 = New System.Windows.Forms.Button
  9.         Me.SuspendLayout()
  10.         Me.Button1.Location = New System.Drawing.Point(66, 127)
  11.         Me.Button1.Name = "Button1"
  12.         Me.Button1.Size = New System.Drawing.Size(101, 31)
  13.         Me.Button1.TabIndex = 0
  14.         Me.Button1.Text = "Button1"
  15.         Me.Button1.UseVisualStyleBackColor = True
  16.     End Sub
  17.  
  18.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  19.         MsgBox("hola mundo, estoy en modo ventanas no en consola", MsgBoxStyle.Exclamation, "al fin una ventana:...")
  20.     End Sub
  21. end class
  22.  
«Ma non troppo»
----> ModoVacaciones = False<----