Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: neoncyber en 28 Abril 2011, 15:15 pm



Título: [C#] Compilador de arhivos batch a exe
Publicado por: neoncyber en 28 Abril 2011, 15:15 pm
Hola a todos este es mi primer aporte a elhacker.net, no me habia dado cuenta del nivel de esta comunidad, bueno, lo que hice es una dll la cual se puede reutilizar la q permite compilar batchs a exe, solo es una aplicacion de consola, pero puede ser extendida facilmente a winforms o lo q se les ocurra espero que les guste. El articulo completo esta en mi blog.

http://donkeysharp.blogspot.com/2011/04/creando-un-compilador-de-batchs.html

Codigo fuente:
http://cid-a9fbcf65213bf348.office.live.com/self.aspx/.Public/%5BSOURCE%5D%20-%20BatCompiler.zip

Para hacer esto me base en otra entrada en la que utilizo los servicios de compilacion de .NET y con un poco de creatividad me salio el de batchs.

Para compilar codigo C# simplemente se sigue mas o menos la logica de este metodo:
Código
  1. public static StringBuilder CompileFromSourceCode(string outputName, string sourceCode, bool generateExecutable) {
  2.         StringBuilder errores = null;
  3.  
  4.         /* Creamos un proveedor de codigo con el cual
  5.           * podemos realizar distintas operaciones sobre
  6.           * algun codigo C-Sharp, una de estas tareas es
  7.           * la de compilar ensamblados.
  8.           */
  9.         CSharpCodeProvider provider = new CSharpCodeProvider();
  10.  
  11.         /* Para este ejemplo se usa el metodo para compilar
  12.           * desde algun código.
  13.           * # provider.CompileAssemblyFromSource(...)
  14.           */
  15.  
  16.         // Para eso necesitamos algunos parametros de compilacion
  17.         CompilerParameters parameters = new CompilerParameters();
  18.  
  19.         // Decimos que el ensamblado sera ejecutable
  20.         // caso contrario seria una DLL
  21.         parameters.GenerateExecutable = generateExecutable;
  22.  
  23.         /* Ahora necesitamos adicionar un ensamblado
  24.           * como es un ejemplo basico solo utilizaremos
  25.           * el assembly System.dll
  26.           */
  27.         parameters.ReferencedAssemblies.Add("System.dll");        
  28.  
  29.         // Establecemos el nombre del ensamblado de salida
  30.         parameters.OutputAssembly = outputName;
  31.  
  32.         // Compilamos el codigo fuente
  33.         CompilerResults results = provider.CompileAssemblyFromSource(parameters, sourceCode);
  34.  
  35.         // En el caso de que existan errores los mostramos
  36.         // caso contrario el ensamblado ha sido construido
  37.         if (results.Errors.Count > 0) {
  38.            errores = new StringBuilder();
  39.            foreach (CompilerError error in results.Errors) {
  40.               errores.AppendLine(string.Format("Error en linea: {0}", error.Line));
  41.               errores.AppendLine("\t" + error.ErrorText);
  42.            }
  43.         }
  44.  
  45.         return errores;
  46.      }
  47.  

Espero les sea util

Saludos


Título: Re: [C#] Compilador de arhivos batch a exe
Publicado por: [D4N93R] en 29 Abril 2011, 21:03 pm
Excelente, agregado al recopilatorio!