Saltar al contenido

.NET 11 trae las uniones de C# 15; termina el soporte de .NET 8 y 9

.NET 11 y C# 15 salieron el 10 de noviembre, el día en que terminó el soporte de .NET 8 y 9. En una prueba práctica, un caso de unión olvidado solo dio un aviso y luego un fallo.

Por

5 min de lectura

XLinkedIn

Traducido automáticamente del original en inglés, que Claire Whitmore verificó y editó. Prevalece la versión en inglés. Cómo trabajamos

Screenshot of Microsoft's .NET and .NET Core Support Policy page, with a supported versions table listing .NET 11 (STS) and .NET 10 (LTS), both supported until November 14, 2028.

En cifras

fin del soporte de .NET 8 y .NET 9
10 nov. 2026
fin del soporte de .NET 10 y .NET 11
14 nov. 2028
de soporte para .NET 11, una versión Standard Term Support
2 años

Microsoft lanzó .NET 11 el 10 de noviembre de 2026, con C# 15 y sus nuevos tipos unión. Ese mismo día, .NET 8 y .NET 9 llegaron al final de su soporte, según la página de política de soporte de Microsoft. El .NET de Microsoft es una plataforma gratuita y de código abierto para crear aplicaciones, y C# es su lenguaje principal. Las aplicaciones que aún funcionan con .NET 8 o 9 ya no reciben correcciones de seguridad de Microsoft.

El anuncio en el .NET Blog llegó el primer día de la .NET Conf 2026, que se celebra del 10 al 13 de noviembre. Thurrott.com señala que .NET 11 es una versión Standard Term Support (STS), con dos años de soporte. Las versiones Long Term Support (LTS) como .NET 10 reciben tres años.

Qué incluyen .NET 11 y C# 15

Lo principal es el lenguaje. C# 15 es el predeterminado en cualquier proyecto que apunte a .NET 11, así que no hace falta ningún ajuste extra. La página "Novedades de C# 15" de Microsoft enumera estas funciones:

FunciónQué haceNecesita un indicador de versión preliminar
Tipos uniónUn tipo que contiene exactamente uno de una lista fija de tiposNo
Jerarquías cerradasUna clase base cuyas subclases conoce por completo el compiladorNo
Argumentos de expresiones de colecciónPasar ajustes del constructor, como una capacidad, dentro de [...]No
Indexadores de extensiónAñadir acceso [index] a un tipo que no es tuyoNo
break y continue con etiquetaSalir de un bucle exterior desde uno interiorNo
Miembros estáticos de interfaz en runtimes antiguosMétodos estáticos simples en interfaces, sin apoyo de runtimes nuevosNo
Reglas de seguridad de memoriaNuevas reglas para el código inseguro con punterosSí

Una unión es útil cuando un valor puede tener una de varias formas, por ejemplo un pago con tarjeta, por transferencia o con un vale. El compilador comprueba entonces que el código trate cada forma.

El resto de la versión son herramientas y bibliotecas. El .NET Blog menciona un host nativo de línea de comandos y un servidor MSBuild que se mantiene activo para compilar más rápido. También menciona OpenAPI 3.2 en ASP.NET Core y piezas de IA con MCP, el Model Context Protocol que conecta modelos de IA con herramientas. El framework de aplicaciones para móviles y escritorio, .NET MAUI, funciona ahora con CoreCLR por defecto. Microsoft habla de "cientos de optimizaciones del runtime", pero no da cifras en el anuncio.

Qué versiones de .NET siguen con soporte

La tabla procede de la página de política de soporte de Microsoft, actualizada el 10 de noviembre de 2026. Según esa página, las versiones pares son LTS y las impares STS.

VersiónTipoLanzamientoÚltimo parcheFin del soporte
.NET 11STS10 de noviembre de 202611.0.014 de noviembre de 2028
.NET 10LTS11 de noviembre de 202510.0.1514 de noviembre de 2028
.NET 9STS12 de noviembre de 20249.0.2310 de noviembre de 2026
.NET 8LTS14 de noviembre de 20238.0.3410 de noviembre de 2026

Hay un detalle que destaca. Tanto .NET 11 como .NET 10 pierden el soporte el mismo día, el 14 de noviembre de 2028. Elegir la versión STS ya no implica una vida más corta que la LTS. La política de Microsoft también dice que solo el último parche de cada versión tiene soporte. Los últimos seis meses de cada versión solo reciben correcciones de seguridad.

Prueba de Tech AI Wire: uniones de C# 15 en el SDK de .NET 11

En una prueba de Tech AI Wire en macOS 26, la imagen de contenedor oficial mcr.microsoft.com/dotnet/sdk:11.0 (Ubuntu 26.04.1, arm64) indicó el SDK 11.0.100. Un proyecto de consola nuevo apuntaba a net11.0, sin ajuste de lenguaje. Los ejemplos de C# 15 de Microsoft compilaron y se ejecutaron tal como están escritos, con una pequeña cuadrícula añadida para el break con etiqueta:

Pet pet = new Dog("Rex");
string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

public union Pet(Cat, Dog, Bird);

La primera ejecución de dotnet run, compilación incluida, tardó 2,6 segundos. Las demás funciones también funcionaron. Un HashSet creado con un comparador que no distingue mayúsculas conservó solo uno de "Hello", "HELLO" y "hello". Un break con etiqueta salió de los dos bucles a la vez.

Después, la prueba borró la línea de Bird del switch. La compilación aun así tuvo éxito. Mostró el aviso CS8509: "The switch expression does not handle all possible values of its input type (it is not exhaustive). For example, the pattern 'Bird' is not covered." Es decir, la expresión switch no cubre todos los valores de su tipo de entrada, por ejemplo 'Bird'. Cuando el programa recibió después un Bird, falló con una SwitchExpressionException y el código de salida 134.

El arreglo fue un solo ajuste. Con -p:WarningsAsErrors=CS8509, la misma compilación falló con el error CS8509 y el código de salida 1. La comprobación de seguridad existe, pero por defecto es solo un aviso.

Qué significa para los desarrolladores

Esta semana hay dos asuntos que atender: las versiones antiguas y los hábitos nuevos.

  • Deja .NET 8 y .NET 9. Ninguna recibe parches desde el 10 de noviembre. Las últimas versiones que lista Microsoft son 8.0.34 y 9.0.23. Cualquier fallo de seguridad que se descubra a partir de ahora quedará abierto en ellas.
  • Elige entre 10 y 11 por funciones, no por duración del soporte. Ambas tienen soporte hasta el 14 de noviembre de 2028. .NET 11 te da C# 15; para un equipo en .NET 8, .NET 10 es el salto más corto.
  • Convierte CS8509 en un error antes de usar uniones. Añade <WarningsAsErrors>CS8509</WarningsAsErrors> al archivo de proyecto, el mismo ajuste que hizo fallar la compilación de la prueba. Sin él, un caso nuevo añadido a una unión puede compilar sin problemas y fallar solo en producción.
  • Deja de lado por ahora las reglas de seguridad de memoria. Todavía necesitan un indicador de versión preliminar, así que pueden cambiar antes de una versión futura.
  • Actualiza las compilaciones con contenedores. En la prueba, la etiqueta sdk:11.0 descargó el SDK 11.0.100. Fija la imagen por su digest en tus Dockerfiles, para que cada compilación use el SDK que probaste.

Los equipos en .NET 10 no tienen plazo. Pueden probar C# 15 en una rama y migrar cuando las bibliotecas de las que dependen admitan .NET 11.

Fuentes

  1. Announcing .NET 11 - .NET Blog
  2. .NET and .NET Core Support Policy - Microsoft
  3. What's new in C# 15 - Microsoft Learn
  4. Microsoft Releases .NET 11 - Thurrott.com

Artículos relacionados