Por supuesto que se puede hacer y el proceso es extremadamente simple.
Aquí estoy explicando los pasos para Ubuntu Linux.
Abrir terminal:
Ctrl + Alt + T
Escriba
gedit hello.cs
En el gedit
ventana que se abre, pegue el siguiente código de ejemplo:
using System;
class HelloWorld {
static void Main() {
Console.WriteLine("Hello World!");
}
}
Guarde y cierre gedit.
Volver al tipo de terminal:
sudo apt update
sudo apt install mono-complete
mcs -out:hello.exe hello.cs
mono hello.exe
Salida:
Hello World!
NOTA:la respuesta de @adabru a continuación hace que mi solución quede obsoleta a menos que esté utilizando una plataforma mono más antigua.
Los scripts de C# se pueden ejecutar desde la línea de comandos de bash al igual que los scripts de Python y Perl, pero se necesita un poco de magia de bash para que funcione. Como Corey mencionó anteriormente, primero debe instalar Mono en su máquina. Luego, guarde el siguiente código en un script bash ejecutable en su máquina Linux:
if [ ! -f "$1" ]; then
dmcs_args=$1
shift
else
dmcs_args=""
fi
script=$1
shift
input_cs="$(mktemp)"
output_exe="$(mktemp)"
tail -n +2 $script > $input_cs
dmcs $dmcs_args $input_cs -out:${output_exe} && mono $output_exe [email protected]
rm -f $input_cs $output_exe
Suponiendo que guardó el script anterior como /usr/bin/csexec, a continuación se muestra un "script" de C# de ejemplo:
#!/usr/bin/csexec -r:System.Windows.Forms.dll -r:System.Drawing.dll
using System;
using System.Drawing;
using System.Windows.Forms;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello Console");
Console.WriteLine("Arguments: " + string.Join(", ", args));
MessageBox.Show("Hello GUI");
}
}
Guarde el código anterior en un archivo como "hello.cs", hágalo ejecutable, cambie la primera línea para que apunte al script bash guardado previamente y luego ejecútelo, debería ver el siguiente resultado junto con un cuadro de diálogo que dice "Hola GUI":
bash-4.2$ ./hello.cs foo bar baz
Hello Console
Arguments: foo, bar, baz
Tenga en cuenta que la GUI requiere que esté en el nivel de ejecución 5. Aquí hay un script C# más simple que se ejecuta en una consola de texto puro:
#!/usr/bin/csexec
using System;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello Console");
Console.WriteLine("Arguments: " + string.Join(", ", args));
}
}
Tenga en cuenta que los argumentos de la línea de comandos se pasan al script de C#, pero los argumentos shebang (en el primer script de C# anterior a "-r:System.Windows.Forms.dll -r:System.Drawing.dll") se pasan al C# compilador. Usando la última funcionalidad, puede especificar cualquier argumento del compilador que necesite en la primera línea de su secuencia de comandos C#.
Si está interesado en los detalles de cómo funciona el script bash, shebang (#!) agrupa todos los argumentos que se le pasan en la primera línea del script C#, seguido del nombre del script, seguido de los argumentos de la línea de comando pasados al script. sí mismo. En el primer ejemplo de C# anterior, los siguientes 5 argumentos se pasarían al script bash (delineados entre comillas):
"-r:System.Windows.Forms.dll -r:System.Drawing.dll" "hello.cs" "foo" "bar" "baz"
El script determina que el primer argumento no es un nombre de archivo y asume que contiene argumentos para el compilador de C#. Luego elimina la primera línea del script de C# usando 'tail' y guarda el resultado en un archivo temporal (ya que el compilador de C# no lee desde la entrada estándar). Finalmente, la salida del compilador se guarda en otro archivo temporal y se ejecuta en mono con los argumentos originales pasados al script. El operador 'shift' se usa para eliminar los argumentos del compilador y el nombre del script, dejando solo los argumentos del script.
Los errores de compilación se volcarán en la línea de comando cuando se ejecute el script C#.
El #!
(hashbang) se usa para decirle al shell qué intérprete usar para que sus scripts perl, php, bash, sh, etc. se ejecuten correctamente.
Pero C# no es un lenguaje de secuencias de comandos, está destinado a compilarse en un formato ejecutable. Debe instalar al menos un compilador y un tiempo de ejecución si desea usar C#, y preferiblemente un IDE (Entorno de desarrollo integrado) para ayudarlo a desarrollar y depurar sus aplicaciones.
Instale Mono para el compilador y el tiempo de ejecución, luego MonoDevelop para el IDE.