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.
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.
Roslynpad es un desarrollo Open Source y todo el código está disponible en la página web del proyecto https://roslynpad.net/ o en su GitHub https://github.com/roslynpad/roslynpad.
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);
}