Recientemente fue la build 2025 y si bien no la cubro porque apenas salen cosas sobre programación específicas de C# si nos dejó algunas pildoritas y una en concreto es la que vamos a tratar en este post, donde veremos como ha cambiado la forma de prototipar aplicaciones en C# ya que no hace falta compilar.
Índice
NOTA: Esta funcionalidad esta disponible en .NET 10 con C# 14, actualmente en preview.
1 - Lanzamiento de C# como lenguaje de scripting en .NET 10
Si bien es cierto que técnicamente no lo han anunciado de esta manera, yo creo que esta claro es que se busca convertir C# en un lenguaje que funcione para todos y para todo. Por ello en esta nueva versión podemos ejecutar código C# en la CLI sin necesidad de tener un proyecto (.csproj), únicamente con un fichero .cs es más que suficiente.
Para ello creamos un fichero que se llame test.cs y le ponemos la siguiente línea:
Console.WriteLine("hello world");
Como vemos un hello world normal de los de toda la vida, la diferencia es que ya no hay .csproj
.
Y en la terminal simplemente ejecutamos el comando dotnet run test.cs
, y podemos observar como funciona perfectamente:
Lo que sucede por detrás es que el comando dotnet run crea un proyecto msbuild en una carpeta caché, restaura los paquetes, compila por detrás, y ejecuta el binario resultante.
2 - Uso de SDKs y librerías
La idea de estos ficheros es que tengan soporte completo para C#, lo que implica poder importar cualquier librería que quieras utilizar con la instrucción #:package
, o si quieres ir más allá y utilizar un SDK como puede ser el de web para tener acceso a las minimal API también lo puedes hacer con la instrucción #:sdk
, aquí podemos ver un ejemplo:
#:sdk Microsoft.NET.Sdk.Web
var app = WebApplication.Create(args);
app.MapGet("/", () => "example minimal API");
app.Run();
Este ejemplo, si lo ejecutamos con dotnet run test.cs, nos iniciará una minimal API de igual forma que cuando creamos un proyecto desde cero.
3 - Qué busca Microsoft con este cambio?
Personalmente llevo años diciendo que desde microsoft se está intentando atraer al talento que está fuera el ecosistema de .NET hacia el propio .NET, hace unos años tuvimos los top level statements, que permiten quitar mucho código e indentación en el código, que en verdad no era necesario. Posteriormente minimal apis, que reducían mucho el código para proyectos pequeños y convierten a C# en un lenguaje más parecido a otros que también son populares.
Y finalmente han dado el paso de intentar hacer de C# un lenguaje de scripting, entiendo que si les sale bien la jugada, matará (a largo plazo por supuesto) a powershell, por que hay muchísimos desarrolladores de .NET que si tienen que hacer un script lo hacen en otro lenguaje como python porque en .NET no era cómodo, ahora, la cosa cambia.
Además, este cambio también facilita la adopción de .NET y C# por parte de personas menos experimentadas, ya que la barrera de entrada no es tan grande, un fichero y un comando y a empezar a practicar.
A mi personalmente me gusta el cambio, de hecho me encanta, porque siempre tengo un proyecto de test vacío que utilizo para probar cosillas, ahora simplemente puedo hacer un fichero y ya.
Aún así, por ahora falta estar pulido, desconozco si saldrá finalmente para .NET 10, pero necesitan si o si integrar intellisense en Visual Studio Code y que funcione perfecto para que esta funcionalidad triunfe.