
Esta semana la cosecha ha sido especialmente prolífica y traemos más de 70 enlaces a contenidos que creo que vale la pena echar un vistazo, como siempre, categorizados por área de interés: .NET, ASP.NET Core, Azure, patrones y buenas prácticas, acceso a datos, inteligencia artificial, programación web (HTML, CSS, Javascript...), herramientas de desarrollo, .NET MAUI y otros.
Como vengo haciendo últimamente, me gustaría destacar el gran post de José Manuel Alarcón sobre técnicas de carga especulativa en páginas web que te ayudarán a mejorar el rendimiento de las aplicaciones.
Muy bueno también el deep dive de Ricardo Peres sobre los tokens de cancelación de tareas, a veces unos grandes desconocidos.
Por último, dos avisos a navegantes: primero, David Grace nos recuerda que en .NET 9, los proyectos de APIs ya no incorporan por defecto Swagger y propone algunas alternativas, y, segundo, Steve Smith alerta de los peligros de usar eventos de .NET en aplicaciones ASP.NET Core y aporta opciones para conseguir lo mismo.
Todo esto, y mucho más, a continuación...
Por si te lo perdiste...
- Binding de parámetros en Minimal APIs con BindAsync
José M. Aguilar - Añadir automáticamente maxlength a inputs usando tag helpers en ASP.NET Core MVC
José M. Aguilar
.NET Core / .NET
- Announcing .NET Community Toolkit 8.4
Sergio Pedri - Understanding Multidimensional Arrays in C#
Rohan Rao - Recurring Tasks in .NET C# : All options explained
Zied Rebhi - Why IActorRef.Tell Doesn't Return a Task
Aaron Stannard - Manually Implementing an Identity Store for Asp.Net Identity
Paul Michaels - Extracting Icons From A Windows DLL Or EXE With C#
Den Delimarsky - LINQ might get a "left join" operator in .net 10
Steven Giesel - Using vectorization in C# to boost performance
Brant Burnett - Inside a Where() - Understanding IEnumerables
James Curran - Object Pools in C#: Examples, Internals and Performance Benchmarks
Alexey Fedorov - Invoking Async Power: What Awaits WinForms in .NET 9
Michael Taylor - Using the YamlDotNet source generator for Native AOT
Andrew Lock - How To Replace Exceptions with Result Pattern in .NET
Anton Martyniuk - Easily Convert Excel to HTML in 3 Steps With C#
Kurmitha Manickhaperumal - Ultra: An advanced profiler for .NET Applications on Windows
Alexandre Mutel - The State of Aspect-Oriented Programming in C# [2025]
Metalama Team - What's New in .NET 9 and C# 13
Ricardo Peres - C# 12: The Experimental Attribute
Thomas Claudius Huber - Meet TUnit: The New, Fast, and Extensible .NET Testing Framework
Sander ten Brinke - The Ultimate Guide to .NET Environment Variables
Hatim Rih - Efficient searching in .NET with SearchValues
Bart Wullems - The attribute OverloadResolutionPriority in .NET 9 and C# 13
NDepend Team - More Testing Tips With C#
Roman Stoffel - MessagePack for C# v3 Release with Source Generator Support
Yoshifumi Kawai - .NET Cancellation Tokens
Ricardo Peres - Avoid Using C# Events in ASP.NET Core Applications
Steve Smith
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: enlaces

Aunque un día más tarde de lo normal debido al puente, aquí van los tradicionales enlaces recopilados durante la semana pasada. Como es habitual, la mayoría de los enlaces son a contenidos en inglés, pero también hay algunos en español que me gustaría destacar en esta ocasión.
Por una parte, Jose Manuel Alarcón explica cómo clonar superficialmente un repositorio GIT (shallow clone) para obtener sólo los últimos commits y ahorrar tiempo y espacio en disco.
También muy interesante el post de Braulio Díez, donde reformula la clásica regla del Boy Scout y, quitándole algo de épica romántica, nos recuerda que a veces no siempre es buena idea tocar donde no debemos, o hacerlo de cualquier forma.
Y ahora, vamos a por el resto...
Por si te lo perdiste...
- Eliminaciones y actualizaciones masivas (bulk deletes/updates) con EF Core 7
José M. Aguilar - Confluencia de ramas en el pipeline de ASP.NET Core
José M. Aguilar
.NET Core / .NET
- From .NET 6 to .NET 8, my migration experience:Fixing missing x-forwarded headers in .NET 8 isolated Azure Functions
Anthony Giretti - Using Testing.Platform with NET 9
Dennis Frühauff - Polymorphic deserialization with YamlDotNet
Anthony Simmon - Faster Dictionary in C#
NDepend Team - C# Tip: 2 ways to generate realistic data using Bogus
Davide Bellone - Lesser known CLR GC Handles
Austin Wise - Typemock Isolator 9.3.3: Embracing .NET 9 and C# 13 with AI Testing Capabilities
Eli Lopian - Choosing the Best Mapping Library for Your .NET Core Project
Muthukumar Thevar - C# Advent: No one loves the .NET Core name anymore
Stephen Cleary - Metadata Consulting [dot] ca: Get the number of columns in an HTML Table using Regex
Metadata Consulting

Hoy me voy a salir un poco de las temáticas habituales para compartir un pequeño truco que llevaba buscando desde hace meses, pero que hasta ahora no había tenido tiempo de investigar.
Como seguro os ocurre a muchos de vosotros, tengo un par de cuentas de Gmail (personal y profesional) y estoy habitualmente saltando de una a otra para gestionar los correos y calendarios. He intentado durante bastante tiempo usar herramientas de escritorio de Windows para gestionar el mail y la agenda de ambas cuentas, pero no he conseguido dar con ninguna que me convenciera del todo, así que he llegado a la conclusión de que realmente la mejor interfaz para Gmail o Google Calendar está en la web.
Pero por otro lado, no me gusta usarlas directamente desde el navegador, así que la opción de instalarlas como aplicaciones web progresivas (PWA) me parecía la mejor solución. Basta con acudir a la página que queremos instalar, por ejemplo https://mail.google.com, abrir el menú de Chrome, acceder a la opción "Enviar, guardar y compartir > Instalar página como aplicación...
" y listo. Durante el proceso, incluso se nos pregunta si queremos anclar la aplicación a la barra de tareas, así que podremos tener muy a mano un acceso directo a la aplicación.
El problema es que, al instalarlas, se abren siempre con el usuario de Google que tengamos configurado como por defecto. En la práctica, la aplicación anclada se abrirá siempre con la misma cuenta, que es aquella con la que nos logamos primero en el navegador. Y esto es un problema si queremos tener acceso rápido a varias cuentas, como es el caso.

Es lunes, así que vamos a por los enlaces interesantes de la semana. Quizás algo más escasos que otras veces, probablemente debido a la festividad de acción de gracias del otro lado del charco, pero aún así tenemos una buena colección 🙂
Esta semana, me ha llamado la atención a una interesante pregunta: ¿cuánta memoria necesitarías para ejecutar un millón de tareas concurrentes? Así a ojo es imposible saberlo, pero hay quien ha hecho la prueba con muchos lenguajes, y vemos que C# no sale nada mal parado.
También es un must read el post "¿Y qué trae de nuevo Angular 19?", donde Jose Manuel Alarcón se ha tomado la molestia de recopilar todas las novedades y explicarlas con gran detalle.
Por último, mi descubrimiento de la semana: los bloques de alertas en Markdown. Markdown es mi formato favorito para escribir un montón de cosas (entre otras, los posts de este blog) y era algo que desconocía y me ha parecido bastante interesante y práctico.
Y ahora, a por el resto de enlaces. ¡Espero que los disfrutes! 😊
Por si te lo perdiste...
- Usar dos claves distintas para buscar en un diccionario de .NET
José M. Aguilar - Ramificar el pipeline de ASP.NET Core con Map() y MapWhen()
José M. Aguilar
.NET Core / .NET
- Introducing Microsoft.Extensions.VectorData Preview
Sarosh Wadia - How to Create SVG Files Programmatically in C# .NET
Paarisha Rana - Fire-and-Forget Methods in C# — Best Practices & Pitfalls
Syed Shahriyar - What's new in .NET 9? Key features you need to know!
David Grace - How to Create Command Line Console Applications in .NET
Anton Martyniuk - How to Schedule and Automate C# .NET Reports
Alec Gall - C# 12.0: inline arrays
Ian Griffiths - Checking whether a URI refers to a Web site root
Raymond Chen - idunno.Bluesky: A .NET class library for the the Bluesky social network
Barry Dorrans

Cuando estamos usando alguna clase de .NET en nuestro código, a veces tenemos interés o necesidad de ver qué hace por dentro, para lo que nos gustaría tener acceso rápido a su código fuente. Aunque los IDEs modernos disponen en muchos casos de herramientas o extensiones que lo permiten, está bien saber que hay otras fórmulas sencillas para conseguirlo muy rápida y cómodamente.
Hace poco me he topado con una de ellas, que me ha parecido muy útil y quería compartirla con vosotros, por si hay alguien más que aún no la conoce: la página https://source.dot.net.

Una semana más, vamos con los contenidos interesantes que he ido encontrando por la red. Esta vez, entre los más de 50 enlaces de la entrega, me gustaría destacar tres de ellos.
En primer lugar, el trabajazo de José Manuel Alarcón para resumir todas las novedades de .NET 9 en un único y magnífico artículo. Si queréis poneros al día en unos minutos, no os lo perdáis.
También me ha resultado interesante el post sobre Web Share, una API JavaScript que desconocía, sencillísima de utilizar, relativamente bien soportada en los navegadores, y que puede sernos útil para facilitar la compartición de contenido en nuestras aplicaciones web.
Por último, a modo de homenaje porque durante años ha sido una valiosa fuente de contenidos e información para muchos, me gustaría destacar la semi-despedida de CodeProject, un sitio que si lleváis unos añitos en esto seguro que habéis visitado más de una vez para consultar algunos de sus casi 66.000 artículos técnicos para desarrolladores. Aunque de momento seguirá en línea en modo de sólo lectura, de alguna forma, el post CodeProject is changing anuncia el fin de una era.
Y ahora, vamos con el resto de contenidos que, como siempre, espero que os resulten interesantes.
Por si te lo perdiste...
- Patrones de listas (list patterns) en C# 11
José M. Aguilar - Archivos estáticos en aplicaciones ASP.NET Core (II)
José M. Aguilar
.NET Core / .NET
- .NET 9 ya está aquí: qué novedades trae y qué esperar de esta versión
José M. Alarcón Aguín - How to Turn On Features in .NET and C# Without Redeploying: Exploring Feature Flags and A/B Testing
Ottorino Bruni - Install and use Microsoft Dot NET 9 with the Raspberry Pi
Peter Gallagher - Early Binding and Late Binding in C#
Karthikeyan N. S. - C# 13 - New features and how you can use them now!
David Grace - Boost Your .NET Projects: Unleashing the Power of Spargine’s Numeric Extension Methods
David McCarter - How to Effectively Use Formulas in Excel Using C#
Kurmitha Manickhaperumal - How to Benchmark Your Code in C#
Grant Riordan - Embeded languages in string values supported by Roslyn
Gérald Barré - Schedule Background Job using Quartz.NET
Ali Hamza Ansari - dotnet scaffold - Next Generation Project Creation for .NET
Sayed Ibrahim Hashimi - Easy logging management with Seq and ILogger in ASP.NET
Davide Bellone