Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2012, 18:50
RyoAkiyama
 
Fecha de Ingreso: octubre-2010
Mensajes: 46
Antigüedad: 13 años, 7 meses
Puntos: 1
Exclamación Compilando una clase desde codigo c#

Hola que tal, como estan espero que bien.

Disculpen tengo una graaan duda.

Como el nombre del tema lo indica, estoy intentado compilar codigo en tiempo de ejecucion. Despues de investigar en varios lados, finalmente pude compilar uno de los ejemplos que vienen en la red. es el siguiente

using System;

namespace spacio
{
public class ClaseCalculo
{
public ClaseCalculo()
{ }
public int MiMetodo()
{
int i = 3; return i * 2;
}
}
}

Esta es la clase de prueba a compilar. Y la manera en la que la compilo e sla siguiente

CSharpCodeProvider csharpCodeProvider = new CSharpCodeProvider();
CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("C#");
CompilerParameters compilerParameters = new CompilerParameters();
compilerParameters.GenerateInMemory = false;
compilerParameters.GenerateExecutable = false;
compilerParameters.OutputAssembly = "...\\PruebaExportarClase.dll";
compilerParameters.ReferencedAssemblies.Add("Syste m.dll");
CompilerResults compilerResults = csharpCodeProvider.CompileAssemblyFromSource(compi lerParameters, caden);
if (compilerResults.Errors.HasErrors)
{
StringBuilder errores = null;
if (compilerResults.Errors.Count > 0)
{
errores = new StringBuilder();
foreach (CompilerError error in compilerResults.Errors)
{
errores.AppendLine(string.Format("Error en linea: {0}", error.Line));
errores.AppendLine("\t" + error.ErrorText);
}
}

}
Si ejecuto esto, to funciona muy bien, pero cuando manejo una msgbox dentro de la clase a compilar, me genera un error indicando que el tipo de la msgbox no existe.

Probe a tratar de agregar mas referencias en la clase

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace spacio
{
public class ClaseCalculo
{
public ClaseCalculo()
{ }
public int MiMetodo()
{
int i = { 0 }; return i * 2;
}
}
}

pero cuando lo compila me genera el eror de compilacion siguiente:

The type or namespace name 'Data' does not exist in the namespace 'System' (are you missing an assembly reference?)

Y asi para todas.

Alguien me podria decir el por que me genera este error???

No se si sea posible agregar ensamblados, o si me falta algun metodo, la verdad no se.

Agradezco de antemano la atencion

Buen dia