roslynpad

Roslynpad, un editor sencillo para scripts en C#

Roslynpad es una herramienta para ejecutar código en .NET diseñada para ser ligera, sencilla, y muy ágil de usar.

Una de las cosas que se le echa en cara a .NET frente a otras soluciones de desarrollo como por ejemplo NodeJs o Python es su relativa complejidad o lentitud a la hora de crear un nuevo proyecto.

roslynpad-completion

Y, en realidad, no les falta razón. Lo cierto es que crear una nueva aplicación en .NET normalmente requiere más trabajo y esfuerzo que en otras alternativas, lo cuál hace que no se emplee tanto en “programas ligeros” tipo script.

Roslynpad es un editor desarrollado en CSharp y Avalonia. Es multi plataforma y funciona tanto en Windows, como Linux y macOS.

Tiene características similares al programa comercial LINQpad, desarrollo en el que Roslynpad se inspira. Pese a que Linqpad es una solución mucho más avanzada, este es de pago.

Roslynpad incorpora funciones de autocompletado, subrayado de errores y sugerencias de corrección. Asimismo pueden añadirse paquetes NuGet, aunque sólo de los repositorios públicos.

En definitiva es una herramienta muy interesante a la hora de trabajar con C# y ejecutar pequeñas aplicaciones de tipo script de una forma cómoda y sencilla.

Probando Roslynpad

Vamos a ver el uso de Roslynpad con un par de ejemplos sencillos. Para ello simplemente tenemos que como abrir un nuevo script y escribir lo siguiente.

Console.WriteLine("Hola desde Roslynpad");

Si ejecutamos el código veremos la salida por la consola de comandos. Una herramienta muy util es Dump(), que nos aparece cómo método de extensión para cualquier objeto, y nos permite mostrar en los resultados. Por ejemplo

var myListadito = new [] {1, 2, 3, 4};

myListadito.Where(x=> x > 2).Select(x=> x * 10).Dump();
Por supuesto, también podemos hacer programas algo más complejos, con funciones, clases, ensamblados y resto de herramientas de .NET.

Por ejemplo, en este sencillo script renombraríamos todos los fichero de una carpeta en la forma de 0.txt, 1.txt, …

var path = @"C:\myPath";
var myFiles = Directory.EnumerateFiles(path).ToArray();

for (int i = 0; i < myFiles.Length; i++)
{
    Rename(myFiles[i], @$"{path}\{i}.txt");
}

public static void Rename(string source, string newName)
{
    var fileInfo = new System.IO.FileInfo(source);
    fileInfo.MoveTo(fileInfo.Directory.FullName + "\\" + newName);
}