csharp-repl

CSharpRepl es el mejor intérprete para C#

CSharpRepl es una herramienta que nos permite ejecutar código C# de forma interactiva en una consola REPL (Read-Eval-Print Loop).

CSharpRepl proporciona una consola interactiva donde puedes escribir y ejecutar fragmentos de código C# en tiempo real. Es decir… ¿sabes el intérprete de Python o Nodejs? Pues es algo así para C#.

Esta herramienta es muy útil para realizar pruebas rápidas, experimentar con nuevas ideas y depurar código sin necesidad de compilar y ejecutar una aplicación completa.

Principales características,

  • Interactividad: Permite ejecutar código C# en tiempo real, facilitando la prueba y experimentación.
  • Evaluación Inmediata: Inmediatamente evalúa y muestra los resultados del código ejecutado.
  • Depuración: Útil para depurar fragmentos de código sin necesidad de compilar toda la aplicación.
  • Exploración de APIs: Facilita la exploración de nuevas APIs y bibliotecas de forma rápida y eficiente.

Algo que, en mi opinión, debería dar el propio Microsoft. Pero oye, como están en la pájara pues… ¡la comunidad la rescate!

Para más información y detalles sobre cómo utilizar CSharpRepl, visita el repositorio en GitHub. Aquí encontrarás documentación adicional, ejemplos de uso y actualizaciones sobre esta herramienta.

Instalación y Configuración

Puedes instalar CSharpRepl globalmente en tu sistema utilizando la CLI de .NET:

dotnet tool install --global CSharpRepl
  1. Verificar la Instalación

Una vez instalado, verifica la instalación ejecutando el siguiente comando en tu terminal:

csharprepl

Deberías ver una consola interactiva de CSharpRepl lista para aceptar comandos.

csharprepl-cli

Integrar con Windows Terminal

En general, la forma preferida de usar C# Repl es a Windows Tterminal, como cualquier otro intérprete de comando. Para ello hay que añadir en el fichero de configuración. Nos vamos a “Opciones” y abajo a la izquierda aparece “Abrir Archivo Json”.

Allí en la colección profiles\list añadimos este

"profiles": 
{
   ...
   "list": 
   [
      ...
	  {
         "commandline": "csharprepl",
         "guid": "{70e71a3e-0518-52f7-81fe-565defc69fe7}",
         "name": "C# REPL"
      }
    ]

Ahora, desde Windows Terminal, nos aparece C# Repl en el desplegable de opciones.

csharp-terminal

Cómo Usar CSharpRepl

Ejecutar Código C#

En la consola de CSharpRepl, puedes escribir cualquier fragmento de código C# y obtener resultados inmediatos. Aquí hay algunos ejemplos básicos:

Imprimir un Mensaje

Console.WriteLine("Hola, CSharpRepl!");

Declarar y Usar Variables

int x = 10;
int y = 20;
Console.WriteLine(x + y);

Definir y Llamar Métodos

int Sumar(int a, int b)
{
   return a + b;
}

Console.WriteLine(Sumar(5, 7));

Uso Avanzado

CSharpRepl también permite el uso de características más avanzadas de C#, como la creación de clases, uso de LINQ, y trabajo con bibliotecas externas.

Crear una Clase

class Persona
{
   public string Nombre { get; set; }
   public int Edad { get; set; }
}

var persona = new Persona { Nombre = "Luis", Edad = 30 };
Console.WriteLine($"Nombre: {persona.Nombre}, Edad: {persona.Edad}");

Usar LINQ

var numeros = new List<int> { 1, 2, 3, 4, 5 };
var pares = numeros.Where(n => n % 2 == 0);
foreach (var par in pares)
{
   Console.WriteLine(par);
}

Cargar y Usar Bibliotecas Externas

Puedes cargar ensamblados y usar bibliotecas externas directamente en la consola REPL. Por ejemplo, para usar una biblioteca de JSON:

#r "path/to/Newtonsoft.Json.dll"
using Newtonsoft.Json;

var json = JsonConvert.SerializeObject(new { Nombre = "Luis", Edad = 30 });
Console.WriteLine(json);

O paquetes nuget

#r "nuget: Dumpify "
using Newtonsoft.Json;

var json = JsonConvert.SerializeObject(new { Nombre = "Luis", Edad = 30 });
Console.WriteLine(json);

csharp-repl-example

Lanzar ficheros CSX

También podemos crear ficheros .csx con una serie de instrucciones o script para ejecutar de forma secuencial. Por ejemplo,

var a = 2 + 2;
Console.WriteLine(a);

Ahora para ejecutarlo simplemente hacemos

csharprepl tu_fichero.csx

y C# Repl ejecutará todas las líneas de una en una.