Compilar y ejecutar C# desde Sublime Text

Todo lo referente a la creación de un nuevo Build System en Sublime Text está explicado detalladamente en la entreda Compilar y ejecutar JAVA desde Sublime Text, así que si tienes alguna duda, pásate por esta entrada ya que la única diferencia entre la presente y la realizada para Java es el contenido del archivo .sublime-build que simplemente es copiar y pegar.


De este modo el contenido del archivo .sublime-build que debemos crear será el siguiente:
//Codigo para Windows
{
  "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe /utf8output /nologo", "$file_name", "&&", "$file_base_name.exe"],
  "shell": true
}
//Codigo para Linux (compilador mono-mcs)
{
  "cmd": ["mcs -out:${file_base_name} ${file_name} && chmod 764 ${file_base_name} && ./${file_base_name}"],
  "shell": true
}
NOTA
Ten en cuenta que según la version del .NET Framework instalada en Windows, la ruta puede variar, y la carpeta llamada v4.0.30319 se puede llamar v3.5 o v3.0, comprueba la dirección del compilador csc.exe antes de probar el Build System.

Guardamos en la carpeta que nos pone por defecto con un nombre descriptivo como por ejemplo "ejecutarC#.sublime-build" y listo. Cuando creemos nuestros programas en C# tan solo debes hacer click en Tools -> Build Systems -> ejecutarC#.


De este modo cuando tengamos nuestro programita en C# listo, al pulsar Ctrl + B o simplemente haces click en Tools -> Build, se compilará nuestro archivo .cs creando un .exe con su mismo nombre, y se ejecutará directamente mostrando el resultado en la consola de Sublime Text, como por ejemplo el siguiente código.
using System;
namespace Saludos {
    public class HolaMundo {
        static void Main(string[] args) {
            Console.WriteLine("Hola mundo!");
        }
    }
}
Dará como resultado:


Comentarios

  1. Saludos, cuando le doy build muestra Building y no lo ejecuta, al presional Ctrl+ñ muestra: Traceback (most recent call last):
    File ".\sublime_plugin.py", line 337, in run_
    File ".\exec.py", line 155, in run
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 105: ordinal not in range(128)

    Anteriormente había hecho lo de ejecutar en cmd.exe desde sublime text y compile y ejecute java y c++.

    Mi archivo lo nombre runC#.sublime-build

    Me puedes ayudar?

    ResponderEliminar
    Respuestas
    1. Es extraño, a mi me compila y ejecuta en el cmd.exe tanto c++, c# y java.

      Lo único que se me ocurre es que revises bien el "runC#.sublime-build" y compruebes la ruta del csc.exe en tu equipo.

      Sigue esta ruta, ya que el problema puede estar en la carpeta \v4.0.30319, que tengas una versión anterior del .NET Framework.
      %WINDIR%\Microsoft.NET\Framework\v4.0.30319\csc.exe

      %WINDIR% = C:\Windows\

      Eliminar
  2. Ya funco algo, no sé que estaba haciendo mal en fin, gracias, ya puedo compilar y ejecutar C, C++, C# y Java en el Sublime Text 2, gracias...

    ResponderEliminar
  3. Hola, tu pagina me parece muy interesante, estoy empezando a trabajar con Python y Ruby a traves de la Code Academy, estoy en cero en algunas cosas, ¿Cómo debo proceder para compilar y correr Ruby y Python en el Sublime Text?

    ResponderEliminar
    Respuestas
    1. Pues según tengo entendido tanto Python como Ruby son lenguajes interpretados, es decir, para ejecutarlos tan solo necesitas instalar el interprete que se suele descargar desde la página web del lenguaje. Además Sublime Text tiene compatibilidad con ambos, así que que solo debes instalar Python o Ruby y en cuanto generes tu archivo de programación, podrás ejecutarlo directamente presionando Ctrl + b.

      Saludos.

      Eliminar
  4. Hola, puedo ejecutar programas en sublime sin embargo si el programa necesita datos de teclado no me sirve ya que no me deja escribir nada y termina el programa (el programa ya esta probado que funciona en netbeans)...

    ResponderEliminar
    Respuestas
    1. Pues eso tiene fácil solución, lo único que tienes que hacer es, según el sistema operativo que uses, es seguir estas entradas, las cuales si todo sale bien, tus programas se ejecutarán en el cmd en windows o el terminal en linux, en ambos casos podrás leer datos del teclado.

      El problema es de la consola de sublime que no puede recoger datos.

      Si usas windows:
      http://ayudasprogramacionweb.blogspot.com.es/2012/12/ejecutar-en-cmdexe-desde-sublime-text.html

      Si usas linux:
      http://ayudasprogramacionweb.blogspot.com.es/2013/01/ejecutar-en-terminal-linux-sublime-text.html

      Saludos, espero serte de ayuda.

      Eliminar
  5. ¿En Sublime Text 3 es igual? No me compila, cuando voy a crear uno nuevo me aparece
    {
    "shell_cmd": "make"
    }

    ResponderEliminar
    Respuestas
    1. pudiste resolverlo? ami me sale igua

      Eliminar
    2. No pasa nada. Alguno pudo compilar C# con Sublime 3?
      El sistema no puede encontrar la ruta especificada.
      [Finished in 0.1s]

      Eliminar
    3. {
      "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe", "/utf8output", "/nologo", "$file_name", "&&", "$file_base_name.exe"],
      "shell": true
      }
      Con esto para ST3 ,usa el hola mundo de la publicacion , guarda el archivo de hola mundo y luego build. (Windows 10).

      Eliminar
    4. También borren el
      {
      "shell_cmd": "make"
      }
      antes de crear el archivo .sublime-build

      Eliminar
    5. Esta opción me funciono, al principio no me funcionaba en ST3 con WIN10, pero coloque lo que se indica, guardé y reinicié el equipo, de esa forma fué que me funcionó

      Eliminar
  6. me manda el siguiente error


    fatal error CS2007: Opción no reconocida: '/nologo" "'
    [Finished in 0.2s with exit code 1]

    ResponderEliminar
  7. La opción /nologo me funciona correctamente en la version .NET 4, sin embargo no es necesaria ya que lo único que hace es evitar que aparezca un mensaje de Microsoft al compilar. Así que puedes quitarla en el sublime-build y dejar solamente la opción /utf8output y listo, te debe de ir bien.

    Este quedaría así:

    //Codigo para Windows
    {
    "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe /utf8output", "$file_name", "&&", "$file_base_name.exe"],
    "shell": true
    }

    Saludos!

    ResponderEliminar
  8. Hola mira me sale ahora este error...

    para Microsoft (R) .NET Framework 4.5
    (C) Microsoft Corporation. Reservados todos los derechos.

    fatal error CS0009: No se puede abrir el archivo de metadatos 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Configuration.Install.dll' -- 'El archivo está dañado.'
    [Finished in 0.3s with exit code 1]

    ResponderEliminar
    Respuestas
    1. Si tienes otra versión del .NET Framework, utiliza el compilador de esa misma versión que es el archivo csc.exe que habrá en la carpeta c:\Windows\Microsoft.NET\Framework\ y tu versión más actual, a ver si se resuelve tu problema.

      Saludos.

      Eliminar
  9. buenas me da el siguiente error!

    El sistema no puede encontrar la ruta especificada.
    [Finished in 0.0s with exit code 1]
    [cmd: ['C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\csc.exe /utf8output /nologo', 'Nuevo documento de texto.cs', '&&', 'Nuevo documento de texto.exe']]
    [dir: C:\Users\Carlos\Google Drive\programacion\codigos tutorial]
    [path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static]


    gracias por adelantado

    ResponderEliminar
    Respuestas
    1. Pues lo primero seria que tu archivo .cs, vamos el archivo con tu código en C# no tenga espacios en blanco, no se exactamente si puede ser motivo de fallo, pero es una buena práctica de programación y te puede ahorrar errores futuros, de modo que:

      Usa un nombre para tu archivo de código C# como Main.cs o Programa.cs por ejemplo.

      Lo siguiente es que compruebes donde esta tu archivo que se encargará de compilar el archivo de código C#, para ello abre la unidad C:\ que estará en "Mi pc" y ve recorriendo las carpetas que usaste en tu Sublime Build, es decir "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe", accede primero a la carpeta Windows, luego a la carpeta Microsoft.NET y así, deberias llegar al archivo csc.exe que es el que compilará tu archivo de C#.
      Si no lo encuentras en la ruta esa, ahí esta el fallo, debes buscarlo sabiendo que si tienes instalado Microsoft.NET estará dentro de esa carpeta, puede ser que tengas otra versión o algo por el estilo (usa la búsqueda de Windows si no lo encuentras).
      Cuando lo hagas, usa su ubicación en tu PC en el Sublime Build, NO OLVIDES PONER DOBLE \\ EN CADA CARPETA.

      Por último si sigue sin ir, quita las opciones \nologo y si quieres también la \utf8output.

      Con esto estoy seguro de que te debe funcionar bien.

      Un saludo y mucha suerte.

      Eliminar
  10. como hago para ver esa consola donde muestra los resultados?

    ResponderEliminar
    Respuestas
    1. Si estás en Windows, busca el programa cmd y si por el contrario estás en linux busca terminal.

      Saludos.

      Eliminar
  11. hola si nos puedes ayudar a actualizar sublime text 3 para poder utilizar cmd. de antemano muchas gracias y gracias por tu aporte ! :)

    ResponderEliminar
  12. alguien sabe como hacerlo con sublime text 3 lo hice como dicen pero no me compila nada de c#

    ResponderEliminar
  13. me sale este mensaje en la variables se pone el nombre del archivo cs

    El sistema no puede encontrar la ruta especificada.
    [Finished in 0.3s with exit code 1]
    [cmd: ['%WINDIR%\\Microsoft.NET\\Framework64\\v4.0.30319\\csc.exe /utf8output /nologo', 'Main.cs', '&&', 'Main.exe']]
    [dir: C:\Users\Mercedez\Desktop]

    ResponderEliminar
  14. jajajaja me costo mucho q funcionara pero ya me salio les comparto el .sublime-build

    {
    "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe", "$file_name", "&&", "$file_base_name.exe"],
    "shell": true
    }

    verifiquen una unica cosa que tengan esta ruta en su ordenador
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
    segun el cmd %WINDIR% = C:\Windows\
    si la tienen genial les funcionara sino tienen exclusivamente esta version v4.0.30319
    solo pongan la que tengan y igual les correra solo esta q verifiquen q version tienen instalada en la ruta C:\Windows\Microsoft.NET\Framework\versionquetengan\csc.exe igual cambian el cmd del sublime si sq tienen otra version
    prueben con un hola mundo seleccionando el build system q crearon del c# y compilan con control + b

    class Saludos {
    public static void Main() {
    System.Console.WriteLine("Hola mundo");
    }
    }

    Saludos.

    ResponderEliminar
  15. Eh seguido tus pasos sin equivocarme o saltarme algo, pero aun no logro que me compile, ya que me manda esto :

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------
    using System;
    using System.Collection.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace HolaMundo
    {
    class program
    {
    static void Main(string[] args)
    {
    Console.WriteLine("Hola Mundo");
    }
    }
    }

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------
    [Finished in 0.0s with exit code 127]
    [cmd: ['mcs -out:hola mundo hola mundo.cs && chmod 764 hola mundo && ./hola mundo']]
    [dir: /root/Desktop]
    [path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    psdata: Uso Linux

    ResponderEliminar
  16. {
    "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe", "/utf8output", "/nologo", "$file_name", "&&", "$file_base_name.exe"],
    "shell": true
    }
    Con esto para ST3 ,usa el hola mundo de la publicación , guarda el archivo de hola mundo y luego build. (Windows 10).

    A mi me funcionó así...

    ResponderEliminar
  17. Gracias por el tutorial, pero conseguí un error que como consecuencia no permite la compilación:
    en la linea de tu codigo JSON:
    ´´´
    "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe /utf8output /nologo", "$file_name", "&&", "$file_base_name.exe"]
    ´´´
    Pusiste la del directorio y 2 flags en el mismo string, como consecuencia en la consola te mostrará directorio invalido. Se soluciona colocando la dirección del directorio y los flags por separado:
    ´´´
    "cmd": ["%WINDIR%\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe", "/utf8output", "/nologo", "$file_name", "&&", "$file_base_name.exe"]
    ´´´

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Autocompletado de codigo en Sublime Text

Compilar y ejecutar JAVA desde Notepad++

Ordenar cualquier array con SORT en JAVA