[C#] Compilador de arhivos batch a exe

Iniciado por neoncyber, 28 Abril 2011, 15:15 PM

0 Miembros y 1 Visitante están viendo este tema.

neoncyber

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 (csharp) [Seleccionar]

public static StringBuilder CompileFromSourceCode(string outputName, string sourceCode, bool generateExecutable) {
        StringBuilder errores = null;

        /* Creamos un proveedor de codigo con el cual
         * podemos realizar distintas operaciones sobre
         * algun codigo C-Sharp, una de estas tareas es
         * la de compilar ensamblados.
         */
        CSharpCodeProvider provider = new CSharpCodeProvider();

        /* Para este ejemplo se usa el metodo para compilar
         * desde algun código.
         * # provider.CompileAssemblyFromSource(...)
         */

        // Para eso necesitamos algunos parametros de compilacion
        CompilerParameters parameters = new CompilerParameters();

        // Decimos que el ensamblado sera ejecutable
        // caso contrario seria una DLL
        parameters.GenerateExecutable = generateExecutable;

        /* Ahora necesitamos adicionar un ensamblado
         * como es un ejemplo basico solo utilizaremos
         * el assembly System.dll
         */
        parameters.ReferencedAssemblies.Add("System.dll");        

        // Establecemos el nombre del ensamblado de salida
        parameters.OutputAssembly = outputName;

        // Compilamos el codigo fuente
        CompilerResults results = provider.CompileAssemblyFromSource(parameters, sourceCode);

        // En el caso de que existan errores los mostramos
        // caso contrario el ensamblado ha sido construido
        if (results.Errors.Count > 0) {
           errores = new StringBuilder();
           foreach (CompilerError error in results.Errors) {
              errores.AppendLine(string.Format("Error en linea: {0}", error.Line));
              errores.AppendLine("\t" + error.ErrorText);
           }
        }

        return errores;
     }


Espero les sea util

Saludos
Código (python) [Seleccionar]

#!/usr/bin/python
print "Visit:"
print "http:\\donkeysharp.blogspot.com"

[D4N93R]

Excelente, agregado al recopilatorio!