¿Cuáles son los números de versión correctos para C #?

¿Cuáles son los números de versión correctos para C #? ¿Qué salió cuando? ¿Por qué no puedo encontrar respuestas sobre C # 3.5 ?

Esta pregunta es principalmente para ayudar a quienes buscan una respuesta utilizando un número de versión incorrecto, por ejemplo, C # 3.5 . La esperanza es que cualquier persona que no encuentre una respuesta con el número de versión incorrecto encuentre esta pregunta y luego vuelva a buscar con el número de versión correcto.

C # historia de la versión del idioma:

Estas son las versiones de C # conocidas en el momento de escribir estas líneas:

  • C # 1.0 lanzado con .NET 1.0 y VS2002 (enero de 2002)
  • C # 1.2 (lo suficientemente extraño); lanzado con .NET 1.1 y VS2003 (abril de 2003). Primera versión para llamar Dispose en IEnumerator s que implementó IDisposable . Algunas otras pequeñas características.
  • C # 2.0 lanzado con .NET 2.0 y VS2005 (noviembre de 2005). Principales características nuevas: generics, métodos anónimos, tipos anulables, bloques de iteradores
  • C # 3.0 lanzado con .NET 3.5 y VS2008 (noviembre de 2007). Principales características nuevas: expresiones lambda, métodos de extensión, árboles de expresiones, tipos anónimos, tipado implícito ( var ), expresiones de consulta
  • C # 4.0 lanzado con .NET 4 y VS2010 (abril de 2010). Principales características nuevas: vinculación tardía ( dynamic ), delegado y varianza genérica de la interfaz, más soporte COM, argumentos con nombre, tipo de datos de tupla y parámetros opcionales
  • C # 5.0 lanzado con .NET 4.5 y VS2012 (agosto de 2012). Características principales : progtwigción asincrónica, atributos de información del llamante. Rompiendo el cambio: cierre variable de bucle .
  • C # 6.0 lanzado con .NET 4.6 y VS2015 (julio de 2015). Implementado por Roslyn . Características : inicializadores para propiedades implementadas automáticamente, uso de directivas para importar miembros estáticos, filtros de excepción, inicializadores de elementos, await en catch y finally , extensión Add métodos en inicializadores de colección.
  • C # 7.0 lanzado con .NET 4.7 y VS2017 (marzo de 2017) Principales características nuevas : tuplas , referencias locales y retorno de ref , coincidencia de patrones (incluidas declaraciones de cambio basadas en patrones), declaraciones de parámetros out línea , funciones locales , literales binarios, separadores de dígitos , y retornos asincrónicos arbitrarios .
  • C # 7.1 lanzado con VS2017 v15.3 (agosto de 2017) Nuevas funciones: principal asincrónico , inferencia de nombre de miembro de tupla , expresión predeterminada , coincidencia de patrones con generics .
  • C # 7.2 lanzado con VS2017 v15.5 (noviembre de 2017) Nuevas funciones: modificador de acceso privado protegido , Span , también conocido como puntero de interior, también conocido como stackonly struct , todo lo demás .
  • C # 7.3 lanzado con VS2017 v15.7 (mayo de 2018). Nuevas características: restricciones de tipo genérico enum, delegado y unmanaged . reasignación de ref . Mejoras inseguras: inicialización de stackalloc , búferes fixed indexados no fixed , sentencias fixed personalizadas. Resolución de sobrecarga mejorada. Variables de expresión en inicializadores y consultas. == y != definido para tuplas. Los campos de respaldo de propiedades automáticas ahora pueden ser segmentados por atributos.
  • C # 8.0 actualmente en la vista previa. Nuevas características esperadas : tipos de referencia no anulables , IAsyncEnumerable , rangos y métodos de interfaz predeterminados.

En respuesta a la pregunta del OP:

¿Cuáles son los números de versión correctos para C #? ¿Qué salió cuando? ¿Por qué no puedo encontrar respuestas sobre C # 3.5?

No existe tal cosa como C # 3.5. La causa de la confusión aquí es que C # 3.0 está presente en .NET 3.5. Sin embargo, el lenguaje y el marco se versionan de forma independiente, como CLR, que está en la versión 2.0 para .NET 2.0 a 3.5, .NET 4 presenta CLR 4.0, a pesar de los paquetes de servicios. El CLR en .NET 4.5 tiene varias mejoras, pero el control de versiones no está claro: en algunos lugares se lo puede denominar CLR 4.5 ( esta página de MSDN se usa para referirse a él de esa manera, por ejemplo), pero la propiedad Environment.Version aún informes 4.0.xxx.

Información más detallada sobre la relación entre el idioma, el tiempo de ejecución y las versiones de framework está disponible en el sitio C # en profundidad . Esto incluye información acerca de las características de C # 3.0 que puede utilizar al orientar .NET 2.0. (Si alguien quiere incluir todo el contenido en esta respuesta wiki, puede hacerlo).

A partir del 3 de mayo de 2017, el equipo de idioma de C # creó una historia de las versiones y características de C # en su repo github: características añadidas en las versiones de lenguaje C # . También hay una página que hace un seguimiento de las características del lenguaje nuevas y recientemente implementadas .

El mayor problema al tratar con los números de versión de C # es el hecho de que no está vinculado a una versión de .NET Framework, que parece deberse a las versiones sincronizadas entre Visual Studio y .NET Framework.

La versión de C # está realmente vinculada al comstackdor, no al marco. Por ejemplo, en Visual Studio 2008 puede escribir C # 3.0 y dirigirse a .NET Framework 2.0, 3.0 y 3.5. La nomenclatura de C # 3.0 describe la versión de la syntax del código y las características admitidas de la misma manera que ANSI C89, C90, C99 describen la syntax / características del código para C.

Eche un vistazo a Mono , y verá que Mono 2.0 (la mayoría implementada la versión 2.0 de .NET Framework a partir de las especificaciones de ECMA) admite la syntax y las características de C # 3.0.

Esta es la misma que la mayoría de las respuestas aquí, pero tabularizada para facilitar, y tiene versiones de Visual Studio y .NET para completar.

 ╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗ ║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║ ╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣ ║ 1.0 ║ 2002 ║ 1.0 ║ 1.0 ║ Feb 2002 ║ ║ 1.2 ║ 2003 ║ 1.1 ║ 1.1 ║ Apr 2003 ║ ║ 2.0 ║ 2005 ║ 2.0 ║ 2.0 ║ Nov 2005 ║ ║ ║ ║ 3.0 ║ 2.0 ║ Nov 2006 ║ ║ 3.0 ║ 2008 ║ 3.5 ║ 2.0 ║ Nov 2007 ║ ║ 4.0 ║ 2010 ║ 4.0 ║ 4 ║ Apr 2010 ║ ║ 5.0 ║ 2012 ║ 4.5 ║ 4 ║ Aug 2012 ║ ║ 5.0 ║ 2013 ║ 4.5.1 ║ 4 ║ Oct 2013 ║ ║ ║ ║ 4.5.2 ║ 4 ║ May 2014 ║ ║ 6.0 ║ 2015 ║ 4.6 ║ 4 ║ Jul 2015 ║ ║ ║ ║ 4.6.1 ║ 4 ║ Nov 2015 ║ ║ ║ ║ 4.6.2 ║ 4 ║ Aug 2016 ║ ║ 7.0 ║ 2017 ║ ║ ║ Mar 2017 ║ ║ ║ ║ 4.7 ║ 4 ║ May 2017 ║ ║ 7.1 ║ 2017(v15.3)║ ║ ║ Aug 2017 ║ ║ ║ ║ 4.7.1 ║ 4 ║ Oct 2017 ║ ║ 7.2 ║ 2017(v15.5)║ ║ ║ Dec 2017 ║ ║ ║ ║ 4.7.2 ║ 4 ║ Apr 2018 ║ ║ 7.3 ║ 2017(v15.7)║ ║ ║ May 2018 ║ ╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝ 

Nota: El desarrollo de .NET es bastante independiente de VS en estos días, no hay una correlación entre las versiones de cada uno. Consulte: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies para obtener más información.

  • C # 1.0 con Visual Studio.NET

  • C # 2.0 con Visual Studio 2005

  • C # 3.0 con Visual Studio 2008

  • C # 4.0 con Visual Studio 2010

  • C # 5.0 con Visual Studio 2012

  • C # 6.0 con Visual Studio 2015

  • C # 7.0 con Visual Studio 2017

VERSIÓN _____ ESPECIFICACIÓN DEL IDIOMA ______ COMPILADOR MICROSOFT

C # 1.0 / 1.2 ____ Diciembre 2001 ? / 2003 ? ___________ enero de 2002 ?

C # 2.0 _______ Septiembre 2005 ________________ Noviembre 2005 ?

C # 3.0 _______ Mayo 2006 _____________________ Noviembre 2006 ?

C # 4.0 _______ Marzo de 2009 (borrador) ______________ Abril de 2010 ?

C # 5.0; lanzado con .NET 4.5 en agosto de 2012

C # 6.0; lanzado con .NET 4.6 2015

C # 7.0; lanzado con .NET 4.7 2017

Puede consultar las últimas versiones de C # aquí Versiones de C #

Historial de versiones de C #:

C # es un lenguaje de progtwigción orientado a objetos simple y poderoso desarrollado por Microsoft.

C # ha evolucionado mucho desde su lanzamiento en 2002. C # se introdujo con .NET Framework 1.0.

La siguiente tabla enumera las características importantes introducidas en cada versión de C #.

Ingrese la descripción de la imagen aquí

Y la última versión de C # está disponible en versiones C # .

He resumido la mayoría de las versiones en esta tabla. Los únicos que faltan deben ser las versiones ASP.NET Core. También agregué diferentes versiones de ASP.NET MVC.

Tenga en cuenta que ASP.NET 5 ha sido renombrado como ASP.NET Core 1.0 y ASP.NET MVC 6 ha sido renombrado como ASP.NET Core MVC 1.0.0. Creo que este cambio se produjo alrededor de enero de 2016.

Incluí la fecha de lanzamiento de ASP.NET 5 RC1 en la tabla, pero todavía tengo que incluir ASP.NET core 1.0 y otras versiones principales porque no pude encontrar las fechas exactas de lanzamiento. Puede leer más sobre las fechas de lanzamiento relacionadas con ASP.NET Core aquí: ¿ Cuándo está progtwigdo el lanzamiento de ASP.NET Core 1.0 (ASP.NET 5 / vNext)?

Versión

Comparando los artículos de MSDN “Novedades en el lenguaje y comstackdor C # 2.0″ y ” Novedades en Visual C # 2005 “, es posible deducir que “C # major_version.minor_version” se acuña de acuerdo con la numeración de la versión del comstackdor.

Hay C # 1.2 correspondiente a .NET 1.1 y VS 2003 y también llamado Visual C # .NET 2003 .

Pero más adelante Microsoft se detuvo para incrementar los números de la versión menor (después del punto) o para tenerlos distintos de cero, 0 . Aunque debe tenerse en cuenta que C # correspondiente a .NET 3.5 se denomina en msdn.microsoft.com como “Visual C # 2008 Service Pack 1” .

Hay dos nombres paralelos: por mayor numeración de versiones de .NET / comstackdor y por numeración de Visual Studio.

C # 2.0 es un sinónimo de Visual C # 2005

C # 3.0 corresponde (o, más correctamente, puede orientar) a:

  • .NET 2.0 <==> Visual C # 2005
  • .NET3.0 <==> Visual C # 2008
  • .NET 3.5 <==> Visual C # 2008 Service Pack 1