Aunque siempre estuvieron ahí, la moda de los agentes IA ha vuelto a llamar al escenario a los worktrees de Git, que permiten trabajar en varias ramas al mismo tiempo sobre el mismo repositorio. En este artículo, José Manuel Alarcón nos explica cómo funcionan y cómo pueden ayudarnos en nuestro día a día.
Cuando lanzamos peticiones desde .NET, lo habitual es esperar a que la respuesta llegue completa antes de procesarla, aunque a veces, si los datos a recibir son masivos, esto no escala bien. Pero, ¿y si pudiéramos procesar los datos a medida que nos van llegando? En este artículo, Nick Cosentino nos explica cómo hacerlo con HttpClient y Server-Sent Events.
Si sigues trabajando con .NET exactamente igual a como lo hacías hace unos años, quizás te vendría bien echar un vistazo al resumen que Simon Foster ha hecho de las novedades que se han ido incorporando a .NET desde la versión 5 hasta la 10, para ver qué cosas nuevas podemos aprovechar.
El resto de enlaces a contenidos interesantes, a continuación.
Por si te lo perdiste...
- Evaluación en cliente de EF Core
José M. Aguilar - Determinar el modo de renderización de un componente Blazor (versión 9 y posteriores)
José M. Aguilar
.NET
- .NET 8 and .NET 9 will reach End of Support on November 10, 2026
Rahul Bhandari - Packaging and Package Identity for .NET apps with WinApp CLI on Windows
Zachary Teutsch - Closed class hierarchies
Andrew Lock - Building an MCP Server in .NET Without Buying the Hype
Martin Stühmer - Claude Skills for .NET: Teach AI to Build Features Your Way
Anton Martyniuk - .NET 5 to 10: Key Features Introduced in Every Release
Simon Foster - Identity vs Principal: Modeling the Current User in .NET — AppointMe
BravoDev - HttpClient Streaming in C#: HttpCompletionOption, ReadAsStreamAsync, and Server-Sent Events
Nick Cosentino - Building a Windows Tray App by combining Microsoft.UI.Reactor and a Worker Project
Morten Nielsen - Writing a .NET Garbage Collector in C#
Kevin Gosse - How to match names in C# without exact string comparisons
Nick Harrison
Publicado por José M. Aguilar a las 8:00 a. m.
Etiquetas: enlaces
En Blazor no existen "signals", como en Angular. Sin embargo, es posible crear algo similar, para conseguir que la UI se actualice automáticamente cuando cambian los datos. Steven Giesel nos explica cómo hacerlo.
Rick Strahl nos explica qué opciones tenemos para crear aplicaciones Windows que puedan ejecutarse tanto en modo consola como en modo GUI, y por qué ninguna de ellas es perfecta 👉
Los caracteres de salto de línea no son simplemente a CR y LF. En este post Gérald Barré nos explica qué debemos tener en cuenta para gestionarlos correctamente en .NET.
Y por último, ¿sabías que desde la llegada de .NET 10 hace unos meses puedes ejecutar un archivo C# directamente desde la línea de comandos? Puedes crear scripts, pequeñas utilidades y ejecutarlas de forma rápida sin necesidad de crear y compilar un proyecto completo. En este post te explico cómo hacerlo.
Enlaces a más contenidos interesantes, a continuación.
Por si te lo perdiste...
- Ejecutar directamente archivos C# desde línea de comandos con "dotnet run"
José M. Aguilar - Implementación de servicios gRPC con ASP.NET Core
José M. Aguilar
.NET
- File-based WinUI apps with Microsoft.UI.Reactor
Morten Nielsen - Avoiding ToString() allocations with StringBuilder.MoveChunks
Andrew Lock - TimeProvider Test Patterns That Hold Up in CI and Production
Martin Stühmer - Creating Dual Use Windows GUI and Console Applications
Rick Strahl - New lines are more than \r and \n
Gérald Barré - Can Claude Code build a .NET app with your code style?
David Grace
Seguro que alguna vez os habéis encontrado con la necesidad de usar un servicio registrado como scoped desde el código de un servicio registrado como singleton. Un caso típico es cuando en una aplicación ASP.NET Core tenemos un servicio corriendo en segundo plano (vaya, un BackgroundService) y necesitamos acceder a servicios que usan bases de datos o cualquier otro recurso que está normalmente asociado al ámbito de una petición HTTP.
Si intentamos inyectar directamente un servicio scoped dentro de un servicio singleton, obtendremos un error al iniciar la aplicación, durante el proceso de validación del árbol de dependencias, ya que el contenedor de .NET no permite esta combinación:
System.AggregateException: 'Some services are not able to be constructed
(Error while validating the service descriptor 'ServiceType:
Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType:
MyBackgroundService': Cannot consume scoped service 'MyDbContext' from
singleton 'Microsoft.Extensions.Hosting.IHostedService'.)'
Una posibilidad (peligrosa: ¡no hacer!) es deshabilitar esta validación inicial, pero esto solo ocultaría el problema y casi con toda seguridad nos llevaría más tarde a errores en tiempo de ejecución que podrían ser difíciles de diagnosticar y, en el peor de los casos, incluso tumbarnos la aplicación.
En este post vamos a ver la forma correcta de resolver el problema creando ámbitos personalizados dentro del servicio singleton, y usándolos para resolver los servicios scoped que necesitemos.
¿Deberíamos adoptar ya Blazor como nuestro framework de desarrollo por defecto para las aplicaciones web? Arunachalam Kandasamy analiza los puntos a favor y en contra y nos da consejos para tomar la decisión.
Y sin cambiar de framework, Arulraj Aboorvasamy nos explica cómo gestionar el estado de la aplicación en Blazor para construir aplicaciones escalables.
Se ha presentado Angular 22, y José Manuel Alarcón nos hace un resumen de las novedades más importantes, con muchos ejemplos de código para que podamos entenderlas mejor.
Muchos más enlaces a contenidos interesantes, a continuación.
Por si te lo perdiste...
- Simulando enumerados de texto en C#
José M. Aguilar - Enumerables asíncronos en C#
José M. Aguilar
.NET
- Your first Microsoft.UI.Reactor app
Morten Nielsen - .NET 11: The STS Release With C# 15 Union Types and Runtime-Async
Martin Stühmer - Discriminated unions in C# and .NET 11 (for real this time)
Maarten Balliauw - Strongly typed generic object in C#
Jiří Činčura - Ship your C# MCP Server as a one-click bundle with MCPB
Bart Wullems - dotnet cleanup v2: Quickly Clean Up bin, obj & node_modules Folders
Sebastian Nilsson - Standardize or Drift: One Defaults Package for All Your Solutions
Martin Stühmer - "Optimizing" concurrent regexes
Oren Eini
Esta semana hay que destacar tanto el anuncio a bombo y platillo de los modelos Claude Fable y Mythos 5 de Anthropic... como su retirada unos días después, debido una orden del gobierno de Estados Unidos por motivos de seguridad nacional. Un mundo curioso este 😉
También se ha lanzado .NET 11 Preview 5, con novedades interesantes como el soporte para JSONL, full outer joins en LINQ, mejoras en runtime asíncrono, una nueva plantilla de proyecto MCP, jerarquías cerradas en C#, validación en cliente y QuickGrid en Blazor SSR, parámetros proporcionados por variables de sesión y muchas más cosas, que podéis encontrar detalladas aquí.
Por último, destacar un artículo sobre el principio DRY, uno de los más utilizados mientras programamos, pero que a menudo se malinterpreta. Milan Jovanović nos explica por qué y cómo debemos aplicarlo correctamente.
El resto de enlaces a contenidos interesantes, a continuación.
Por si te lo perdiste...
- Asignaciones seguras con 'null conditional assignments' de C# 14 (.NET 10)
José M. Aguilar - Switch expressions en C# 8
José M. Aguilar
.NET
- Proxies en Go o C#
Fernando Escolar - .NET 11 Preview 5 is now available!
.NET Team - .NET at Microsoft Build 2026: Must watch sessions
Daniel Roth - Microsoft Build 2026 recap: vision, launches, and top sessions
Jon Galloway - Convert HTML to Markdown in C# Without Losing Structure or Images
Mathan Kumar Varadharaja - Model Validation in ASP.NET Core: Data Annotations and FluentValidation
Nick Cosentino - Boost Your .NET Projects: Future-Proofing Performance with Spargine’s Fast Methods
David McCarter - Introducing Corvus.Text.Json V5: Why V5 Exists
Ian Griffiths - The new Visual Studio Solution File Format: Goodbye .SLN, Welcome .SLNX!
Thomas Claudius Huber - C#14 The field keyword
Karen Payne - New features and Roslyn analyzers for Meziantou.Framework.FullPath
Gérald Barré - Introducing Corvus.Text.Json V5: Schema Validation 10x Faster & Pooled-Memory Parsing
Ian Griffiths - TUnit.Mocks: No Castle, No Reflection, No Drama
Martin Stühmer - Creating a Packaged Single File Web Site Viewer Executable
Rick Strahl
Todos hemos tenido que lidiar con situaciones en las que una función o método puede devolver diferentes tipos de datos dependiendo de ciertas condiciones. El ejemplo clásico es una función que puede devolver un resultado exitoso o un error, lo que a menudo se maneja con tipos como Result<T> o haciendo algunos malabarismos con composiciones de clases o herencia.
var result = GetUser(1);
if(result.Success)
{
var user = result.Value;
// Hacer algo con el usuario
}
else
{
var error = result.Error;
// Manejar el error
}
Son artificios que, aunque funcionan, dan trabajo, complican la legibilidad y ocultan la intención real del desarrollador a la hora de escribir código de procedimientos que manejen múltiples tipos de retorno.
Los tipos unión son una de las características más solicitadas en C# durante años, y finalmente los tendremos disponibles en la versión 15 del lenguaje, que vendrá de la mano de NET 11 en noviembre de 2026.
Con esta nueva capacidad, podremos crear tipos que pueden contener valores de varios tipos diferentes, con controles en tiempo de compilación y sin apenas complejidad adicional.
Lo vemos en detalle a continuación.

