Hace unos días se lanzó .NET 10 y, con él, C# 14, una nueva versión del lenguaje que viene con varias novedades interesantes que mejoran la productividad y la experiencia de desarrollo.
Las más destacables son:
- Miembros extensores
- Asignaciones condicionales
- Propiedades semi-automáticas
- Simplificación del uso de
nameofcon tipos genéricos - Eventos y constructores parciales
- Conversiones implícitas para
Span<T>yReadOnlySpan<T> - Simplificación de parámetros de lambdas
Les damos un vistazo rápido a continuación.
La semana pasada, sin duda el protagonismo se lo ha llevado el lanzamiento de .NET 10, con multitud de artículos que repasan los cambios y características introducidas en esta versión, aunque hay mucho más.
En primer lugar, destacamos el artículo de CampusMVP: .NET 10 - Informe técnico para desarrolladores: novedades y mejoras importantes, imperdible para ponernos rápidamente al día.
También OpenAI ha publicado interesantes artículos, uno sobre los problemas de seguridad que supone el uso de prompt injection, y otro sobre el uso de una nueva técnica que mejora la interpretabilidad de las redes neuronales, algo difícil de conseguir con los modelos tradicionales. Y bueno, ha aprovechado también presentar su nuevo modelo GPT-5.1.
Por último, destacar el artículo de Sudhir Mangla sobre gestión de memoria en .NET, que repasa conceptos clave como stack, heap, Span<T>, Memory<T>, ArrayPool y otros temas que debemos conocer para crear aplicaciones .NET de alto rendimiento.
Por si te lo perdiste...
- Registro y obtención de servicios con nombre (keyed services) en .NET
José M. Aguilar - Cargar automáticamente objetos del modelo en acciones ASP.NET Core MVC
José M. Aguilar
.NET
- Announcing .NET 10
Mark Adamson - .NET 10 - Informe técnico para desarrolladores: novedades y mejoras importantes
CampusMVP - Implementando Azure Service Bus con Clean Architecture
Gerson Azabache Martínez - What′s new in .NET 10
nullGeorgii Tormozov - How to Target Excel Metadata in C# for Smarter Document Management
Mohan Chandran - Scanning .NET Assemblies for References & Isolator with References Scanning
Ricardo Peres - Mocking Statics in .NET - We Made the Impossible Possible
Eli Lopian - Capturing Console Output in xUnit.v3
Steven Giesel - Modern .NET Reflection with UnsafeAccessor
NDepend Team - .NET 10 and the Release Cycle Paradox & .NET 10: Timing Is the New Technical Debt
Martin Stühmer - New Features in .NET 10 and C# 14
Anton Martyniuk - Missing Security Features in .NET 10
Khalid Abuhakmeh - Working with Excel files in .NET: OpenXML vs EPPlus vs ClosedXML
Ali Hamza Ansari - .NET 10: What’s New for Authentication and Authorization
Andrea Chiarelli - C# 14 Extension Members: Enhancing Polyfill Libraries
Gérald Barré - Unlocking Collection Expressions for your own types
Bart Wullems - Syncfusion Delivers Day-1 Support for .NET 10 Across UI Components and Document Libraries
Meena Alagiah - Memory Management Masterclass: Stack vs Heap, Span<T>, Memory<T>, and ArrayPool in High-Performance C#
Sudhir Mangla - Are C# 14's new features worth updating your app to .NET 10?
David Grace - Use TimeSpan Or Specify Units In Duration Properties And Parameters
Steve Smith - .NET 10: Boring by Design, Reliable by Default
Martin Stühmer
La obsesión por los tipos primitivos es un code smell bastante común en el desarrollo de software. Gerson Azabache nos explica cómo los Value Objects en .NET pueden ayudarnos a combatir este problema.
Decidir qué framework de frontend nos conviene aprender siempre es una tarea complicada. Para ayudarnos con esto, José Manuel Alarcón ha preparado una comparativa detallada entre React, Angular, Vue.js y Svelte.
El servidor MCP de Azure permite que agentes o aplicaciones basadas en IA interactúen con los recursos que gestionamos en la nube. Juan Irigoyen da un vistazo a esta herramienta en su artículo.
Daniel Roth nos cuenta cómo Copilot Studio utiliza .NET y WebAssembly para mejorar el rendimiento en este entorno low-code.
Estos, y muchos más enlaces a contenidos interesantes, a continuación.
Por si te lo perdiste...
- Quizás no estés comparando con null de forma totalmente correcta
José M. Aguilar - Novedades de System.Text.Json en .NET 9
José M. Aguilar
.NET
- Value Objects en .NET: la cura contra el code smell Primitive Obsession
Gerson Azabache Martínez - Interesting new C# 14 features coming with .NET 10
Thomas Levesque - Modern Defensive Programming in .NET — Unified Throw-Helpers and Multi-Framework Compatibility
Martin Stühmer - How Copilot Studio uses .NET and WebAssembly for performance and innovation
Daniel Roth - Easier reflection with [UnsafeAccessorType] in .NET 10
Andrew Lock - Define a default startup project in your slnx file
Mark Downie - A Modern Guide to Using OAuth 2.0 with C# and Visual Studio Code
Dean Hume - ArrayPool Benchmarks: We have a problem
Steven Giesel - Stop Breaking Multi-Targeting Builds with String Comparisons
Martin Stühmer - C# 14: The Null-conditional Assignment – Thomas Claudius Huber
Thomas Claudius Huber - .NET 10 Breaking Changes To Keep An Eye On When Upgrading
Khalid Abuhakmeh
Si, por curiosidad o necesidad, alguna vez has abierto un archivo de solución de Visual Studio (.sln) con un editor cualquiera, habrás comprobado que se trata de un archivo de texto plano.
Su estructura, aunque no es excesivamente compleja y está bien documentada, es propietaria de Visual Studio y no es evidente a simple vista, resulta demasiado verbosa, tiene mucha información irrelevante duplicada y, en general, no es nada amigable para los desarrolladores que se ven obligados a modificarla, sobre todo cuando se trata de resolver conflictos en sistemas de control de versiones. Y, por supuesto, es algo que se agrava conforme crece el número de proyectos en la solución.
Esto llevó a Microsoft a presentar hace unos meses el nuevo formato de archivo de solución .slnx, una alternativa basada en XML mucho más ligera, concisa y fácil de entender, que será el utilizado por defecto a partir de la llegada de .NET 10.
Lo vemos en profundidad a continuación.
Esta semana, en la recopilación de enlaces encontramos el interesante repaso de Ricardo Peres a algunas técnicas para optimizar el trabajo con cadenas de texto en .NET en búsquedas, formateo, extracción de subcadenas y uso de interning.
Vale la pena también echar un vistazo a la notación de objetos orientada a tokens (TOON) propuesta por Johann Schopplich para reducir significativamente el coste en tokens al enviar datos estructurados (como JSON) a modelos de lenguaje.
Isaac Ojeda nos muestra cómo utilizar channels y servicios de .NET para crear un sistema de control de tareas en segundo plano, muy interesante.
E imperdible el detallado análisis de Andrew Lock sobre la grave vulnerabilidad "request smuggling" en ASP.NET Core, calificada con una puntuación de 9.9, la más alta hasta la fecha.
El resto de contenidos, a continuación.
Por si te lo perdiste...
- ¿Aplicar [Authorize] a todos los controladores MVC de una carpeta?
José M. Aguilar - No se puede conectar al servidor web 'https', el servidor web ya no funciona y otras pistas de que no has lanzado correctamente tu aplicación ASP.NET Core
José M. Aguilar
.NET
- Sistema de Control de Jobs en Tiempo Real con Channels y Background Services en .NET
Isaac Ojeda - Cómo implementar Redis en Clean Architecture utilizando .NET
Gerson Azabache Martínez - Thread-Safe Initialization with LazyInitializer
Gérald Barré - Using SignalR with Wolverine 5.0
Jeremy D. Miller - Akka.NET + Kubernetes: Everything You Need to Know
Aaron Stannard - Are you still using new Random() everywhere?
Steven Giesel - Building Dropbox in .NET: Chunked Uploads, Merkle Trees, and Cloud Architecture for Petabyte-Scale Sync
Sudhir Mangla - Working with Strings in .NET
Ricardo Peres - Load Testing Kafka Pipelines with C# and NBomber
Anton Martyniuk - How to Import, Export, and Filter PDF Annotations in C#
Chinnu Muniyappan - Distributed Isolator
Ricardo Peres - PackageDownload: NuGet's Forgotten Power Tool
Martin Stühmer - Distributed ID Generation at Scale in .NET: From Snowflake to ULID and Beyond
Sudhir Mangla - Your Tests Are Lying — Mutation Testing in .NET
Martin Stühmer - Grammarly in .NET: Real-Time Grammar Checking, Context-Aware Suggestions, and Processing 1 Billion Words Daily
Sudhir Mangla - Catching dependency injection configuration errors early
Bart Wullems - What’s new in .NET 10
Denis Makarenko
Los dev tunnels permiten exponer, permanente o temporalmente, aplicaciones web locales a Internet de forma segura y sencilla desde Visual Studio. Son ideales para desarrollo y pruebas y, si nos los conoces, deberías echar un vistazo al post de Mike Irving, donde explica cómo usarlos.
Derek Comartin reflexiona sobre la ubicación adecuada para implementar la autorización en nuestras aplicaciones: ¿debería estar en la capa de dominio o en la capa de aplicación? Una lectura muy recomendable para entender mejor este aspecto crucial del diseño de software.
A pesar del miedo generalizado a que la inteligencia artificial (IA) destruya empleos tecnológicos, la realidad es muy distinta. Desde CampusMVP nos llega un artículo que desmonta este mito y da pistas sobre cómo los profesionales podemos adaptarnos en esta nueva era.
Gerson Azabache nos habla sobre el concepto "idempotencia" y su importancia en la ingeniería de software moderna. Un principio clave para garantizar la confiabilidad y robustez de nuestras aplicaciones. No te pierdas su análisis.
Estos, y muchos más enlaces a artículos interesantes, a continuación.
Por si te lo perdiste...
- BenchmarkDotNet: Arañando microsegundos en proyectos .NET Core o .NET Framework
José M. Aguilar - Tuplas como variables de control en bucles "for" de C#
José M. Aguilar
.NET
- Introducing Isolator - a framework for running isolated code for .NET
Ricardo Peres - Inlining and structs in C#
Steven Giesel - xUnit v3 update: Ability to skip tests & a new TestContext
David Grace - RestClient.Net 7: Compile-Time Safety and OpenAPI MCP Generation
Christian Findlay - Understanding When Type.FullName Returns Null in .NET
Gérald Barré - Using profiler function hooks in .NET with Silhouette
Kevin Gosse - Practical OOP in Modern C#: Composition Over Inheritance, Records, and Pattern Matching
Sudhir Mangla - Announcing Sponsorship on NuGet.org
Simon Cropp - Upgrading to Microsoft Agent Framework in Your .NET AI Chat App
Bruno Capuano - Boxing in C#: What It Costs You and How to Get Rid of It
NDepend Team - Modern C# Design Patterns You Should Actually Use in 2025
Vahid Bakhtiary - Modern C# Design Patterns You Should Actually Use in 2025
Vahid Bakhtiary - C# 14: The field Keyword – Or Should I Say: I Had a Dream?
Thomas Claudius Huber - The Evolution of .NET Dependency Resolution
Ricardo Peres - ConstantExpectedAttribute: Unlocking Performance Through Compiler Awareness
Martin Stühmer

