Una actualización de las versiones de C # y las herramientas de C #

Comenzando con Visual Studio 2019 Preview 4 y RC, ajustaremos cómo se tratan las versiones de C # en las herramientas .NET. Lea más a continuación <cut>.


Resumen de cambios


En primer lugar, estamos agregando dos nuevos valores de Versión de idioma ( LangVersion ): LatestMajor y Preview . Así es como se comparan con la lista de valores admitidos actualmente:

LangversionSignificado
LatestMajorÚltima versión de lenguaje C # principal compatible
Vista previaLa última versión disponible del lenguaje C # de vista previa
Más recienteLa última versión de lenguaje C # compatible (incluida la versión secundaria)
ISO-1C # 1.0 / 1.2
ISO-2C # 2.0
3C # 3.0
4 4C # 4.0
5 5C # 5.0
6 6C # 6.0
7 7C # 7.0
7.1C # 7.1
7.2C # 7.2
7.3C # 7.3
8.0C # 8.0

Cuando no se especifica LangVersion, el significado predeterminado ahora está determinado por el marco de destino de su proyecto. Cuando apunta a un marco de vista previa que también tiene una versión de C # de vista previa correspondiente, esa versión de vista previa es la predeterminada. Si no tiene como objetivo un marco de vista previa, se elige Último .


Experiencia cuando C # 8.0 está en vista previa


Los siguientes escenarios explican cómo se interpretará la versión predeterminada de C # mientras C # 8.0 todavía está en la vista previa.


Orientación de netcoreapp3.0 preview o netstandard2.1 preview


La versión de idioma predeterminada elegida en este escenario es Vista previa . Las características de C # 8.0 a las que tiene acceso se basan completamente en la versión del compilador (y, por lo tanto, en el SDK de .NET) que está utilizando. A medida que utilice las previsualizaciones futuras, puede obtener más funciones (o ligeramente modificadas). Cuando crea un proyecto, el SDK de .NET emitirá una advertencia de que todo esto todavía está en la vista previa.


Orientación de .NET Framework


La versión de idioma predeterminada elegida en este escenario es la más reciente . Cualquier uso de una función C # 8.0 es un error de compilación. Las herramientas de Visual Studio le indicarán una solución rápida que puede cambiar la versión del idioma para el proyecto o la solución cuando se encuentra uno de estos errores. Debido a que algunas características requieren tipos subyacentes o características de tiempo de ejecución que no están disponibles en .NET Framework, como los Miembros de interfaz predeterminados, aún puede obtener un error para esas características cuando se dirige a .NET Framework.


Vista previa múltiple de netcoreapp3.0 o vista previa netstandard2.1 y .NET Framework


Para los destinos de vista previa netcoreapp3.0 / netstandard2.1 , la versión de idioma es Vista previa . Se emite una advertencia en la compilación desde .NET SDK. Para el objetivo de .NET Framework, la versión del idioma es la más reciente .


Se utiliza LangVersion explícito


Si establece explícitamente un valor LangVersion, se respetará y se ignorará el comportamiento predeterminado mencionado anteriormente.


Experiencia cuando C # 8.0 y .NET Core 3.0 son GA


Finalmente, C # 8.0 y .NET Core 3.0 se enviarán en una versión de calidad GA. Esto es a lo que se asignarán los valores relevantes de LangVersion en ese momento:

LangversionSignificado
Más reciente8.0
LatestMajor8.0
Vista previaAún no determinado

Los proyectos que no especifiquen una LangVersion se tratarán como si fueran Últimos cuando C # 8.0 es GA.


Si creó un proyecto para la vista previa de C # 8.0 dirigida a la vista previa de .NET Core 3.0 o la vista previa de .NET Standard 2.1, y tampoco especificó una LangVersion, será como si se hubiera elegido Último . No podrá optar por la Vista previa en ningún escenario una vez que C # 8.0 y .NET Core 3.0 sean GA.


Al momento de escribir, no hay un plan para una vista previa de C # cuando C # 8.0 es GA. Eventualmente, se enviará una vista previa y tendremos una publicación de blog que lo explicará.


Justificación


Hasta este punto, la versión predeterminada de C # utilizada en Visual Studio era equivalente a LatestMajor . Esto ha sido problemático por dos razones:


  1. C # ahora evoluciona entre los ciclos de lanzamiento de Visual Studio, pero los nuevos proyectos en Visual Studio seguirían predeterminados a una versión anterior de C #.
  2. La vista previa de C # 8.0 es una mejor opción para proyectos que se dirigen a la vista previa de .NET Core 3.0, pero no había forma de convertirla en predeterminada sin también convertirla en la predeterminada para proyectos que no estaban destinados a la vista previa de .NET Core 3.0.

En términos más generales, a medida que evolucionamos C # y continuamos lanzando más funciones que se alinean con una futura versión de .NET Core, queremos asegurarnos de que pueda usar estas funciones de la manera más fluida posible. Esto también le permite usar características más temprano en su ciclo de vida de desarrollo, aumentando la ventana de tiempo en que los comentarios procesables sobre una característica podrían influir en su diseño.


Soporte y compatibilidad para funciones de vista previa


La forma de pensar sobre el soporte también es un poco diferente. Para permitir el uso de las funciones de vista previa de C # 8.0 dentro de un Visual Studio 2019 lanzado, las preocupaciones de soporte y compatibilidad se distinguen por vista previa vs. características lanzadas:


  • Cualquier característica o comportamiento de C # 7.3 y versiones anteriores es totalmente compatible y totalmente compatible. Ningún cambio de lo que existe actualmente hoy.
  • Cualquier función de vista previa de C # 8.0 no es compatible.
  • No hay garantía de compatibilidad de una vista previa de C # 8.0 a otra.

En resumen, si usa la vista previa de C # 8.0 en Visual Studio 2019, algunas características y comportamiento pueden cambiar entre ahora y cuando C # 8.0 se publique por completo.


¡Feliz pirateo!

Source: https://habr.com/ru/post/443000/


All Articles